AI-powered semantic search for Blazor AutoComplete using Microsoft.Extensions.AI. Supports OpenAI, Azure OpenAI, and Ollama with SIMD-accelerated similarity, dual caching (items + queries), and hybrid search. Includes core package.
$ dotnet add package EasyAppDev.Blazor.AutoComplete.AIAI-powered semantic search for the Blazor AutoComplete component. Search by meaning, not just keywords.
dotnet add package EasyAppDev.Blazor.AutoComplete.AI
Note: This package includes the core AutoComplete component as a dependency.
Option A: appsettings.json (Recommended)
{
"OpenAI": {
"ApiKey": "sk-proj-...",
"Model": "text-embedding-3-small"
}
}
// Program.cs
builder.Services.AddAutoCompleteSemanticSearch(builder.Configuration);
Option B: Direct API Key
builder.Services.AddAutoCompleteSemanticSearch(
apiKey: "sk-proj-...",
model: "text-embedding-3-small");
@using EasyAppDev.Blazor.AutoComplete.AI
<SemanticAutoComplete TItem="Document"
Items="@docs"
SearchFields="@(d => new[] { d.Title, d.Description })"
TextField="@(d => d.Title)"
SimilarityThreshold="0.15"
@bind-Value="@selectedDoc"
Placeholder="Search by meaning..." />
| Provider | Setup Method | Cost | Privacy |
|---|---|---|---|
| OpenAI | AddAutoCompleteSemanticSearch() | $ | Cloud |
| Azure OpenAI | AddAutoCompleteSemanticSearchWithAzure() | $ | Azure |
| Ollama | Custom IEmbeddingGenerator | Free | Local |
builder.Services.AddAutoCompleteSemanticSearchWithAzure(
endpoint: "https://my-resource.openai.azure.com/",
apiKey: "your-azure-api-key",
deploymentName: "text-embedding-ada-002");
using OllamaSharp;
var ollamaClient = new OllamaApiClient("http://localhost:11434");
builder.Services.AddSingleton<IEmbeddingGenerator<string, Embedding<float>>>(
ollamaClient.AsEmbeddingGenerator("nomic-embed-text"));
<SemanticAutoComplete TItem="Product"
Items="@products"
SearchFields="@(p => new[] { p.Name, p.Description })"
@* Cache Configuration *@
ItemCacheDuration="TimeSpan.FromHours(2)"
QueryCacheDuration="TimeSpan.FromMinutes(30)"
MaxItemCacheSize="20000"
@* Pre-warming *@
PreWarmCache="true"
ShowCacheStatus="true"
@* Search Tuning *@
SimilarityThreshold="0.15"
MinSearchLength="3"
DebounceMs="500"
@bind-Value="@selectedProduct" />
For production-grade semantic search with persistent storage, use vector database providers:
| Package | Provider |
|---|---|
EasyAppDev.Blazor.AutoComplete.AI.PostgreSql | PostgreSQL/pgvector |
EasyAppDev.Blazor.AutoComplete.AI.AzureSearch | Azure AI Search |
EasyAppDev.Blazor.AutoComplete.AI.Pinecone | Pinecone |
EasyAppDev.Blazor.AutoComplete.AI.Qdrant | Qdrant |
EasyAppDev.Blazor.AutoComplete.AI.CosmosDb | Azure CosmosDB |
MIT