Set Up Vector and Hybrid Search

This guide assumes you have an embedding model that produces float arrays. See Vector & Hybrid Search for concept background and mode selection.

Prepare Your Data

Each document must include the embedding as a JSON float array:

json
[
  { "id": 1, "title": "Wireless Headphones", "embedding": [0.12, -0.45, 0.33, ...] },
  { "id": 2, "title": "Bluetooth Speaker",   "embedding": [0.08,  0.21, -0.14, ...] }
]

Configure and Load

csharp
var engine = new SearchEngine();

using var stream = File.OpenRead("products.json");
engine.Init(stream);

engine.GetField("title")!.Searchable = true;
engine.GetField("embedding")!.Embeddable = true;  // excluded from text index

stream.Position = 0;
engine.Load(stream);
engine.Index();
csharp
float[] queryVector = await myEmbeddingClient.EmbedAsync("comfortable headphones");

var index   = engine.EmbeddingFields["embedding"];
var results = index.Search(queryVector, maxResults: 10);

var keys = results.Select(r => r.documentKey).ToArray();
var docs  = engine.GetJsonDataOfKeys(keys);
csharp
float[] queryVector = await myEmbeddingClient.EmbedAsync("comfortable headphones");

var textResult    = engine.Search(new Query("comfortable headphones", 50));
var vectorResults = engine.EmbeddingFields["embedding"].Search(queryVector, maxResults: 50);

var merged = IEmbeddingIndex.MergeHybrid(
    textResults:      textResult.Records,
    embeddingResults: vectorResults,
    alpha:            0.6f
);

var keys = merged.Select(r => r.documentKey).ToArray();
var docs  = engine.GetJsonDataOfKeys(keys);