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:
[
{ "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
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();Vector Search
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);Hybrid Search
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);