Skip to content

Commit ab1f53e

Browse files
committed
Refactor README for EasyAppDev.Blazor.AutoComplete.Generators: Update features, installation instructions, and source generator details; add diagnostic codes for expression validation. Add icon for OData package.
1 parent 772135f commit ab1f53e

20 files changed

Lines changed: 633 additions & 1977 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ claude-artifacts/
8585
appsettings.json
8686
claude_workspace/
8787
.claude-workspace/
88-
docs/
88+
# docs/
8989
*.nupkg
9090
*.snupkg
9191
############################
@@ -108,3 +108,4 @@ publish-trimmed/
108108
Thumbs.db
109109

110110
samples/AutoComplete.Playground/appsettings.json
111+
docs/blog.md

Directory.Build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
<PackageTags>blazor;autocomplete;component;ai;semantic-search;performance;trimming;aot;wcag;accessibility;theming;virtualization</PackageTags>
2525
<PackageReadmeFile>README.md</PackageReadmeFile>
2626
<PackageIcon>icon.png</PackageIcon>
27-
<Version>1.0.5</Version>
28-
<PackageReleaseNotes>Version 1.0.5 - Added OData integration package (EasyAppDev.Blazor.AutoComplete.OData) with support for OData v3/v4 endpoints, automatic $filter generation, multi-field search, and all filter strategies (StartsWith, Contains, FuzzyFallback). Enhanced demo pages with interactive search hints.</PackageReleaseNotes>
27+
<Version>1.0.6</Version>
28+
<PackageReleaseNotes>Version 1.0.6 - Updated all package READMEs with focused documentation for each package. Added READMEs for vector database providers (PostgreSQL, Azure AI Search, Pinecone, Qdrant, CosmosDB).</PackageReleaseNotes>
2929
<Copyright>Copyright (c) 2025 EasyAppDev</Copyright>
3030

3131
<!-- Documentation -->

src/EasyAppDev.Blazor.AutoComplete.AI.AzureSearch/EasyAppDev.Blazor.AutoComplete.AI.AzureSearch.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@
1919
<NoWarn>$(NoWarn);IL2026;IL3050</NoWarn>
2020
</PropertyGroup>
2121

22+
<!-- Package README and Icon -->
23+
<ItemGroup>
24+
<None Include="README.md" Pack="true" PackagePath="\" />
25+
<None Include="icon.png" Pack="true" PackagePath="\" />
26+
</ItemGroup>
27+
2228
<ItemGroup>
2329
<ProjectReference Include="..\EasyAppDev.Blazor.AutoComplete.AI\EasyAppDev.Blazor.AutoComplete.AI.csproj" />
2430
</ItemGroup>
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# EasyAppDev.Blazor.AutoComplete.AI.AzureSearch
2+
3+
Azure AI Search integration for semantic search with the Blazor AutoComplete component.
4+
5+
[![NuGet](https://img.shields.io/nuget/v/EasyAppDev.Blazor.AutoComplete.AI.AzureSearch.svg)](https://www.nuget.org/packages/EasyAppDev.Blazor.AutoComplete.AI.AzureSearch/)
6+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7+
8+
## Features
9+
10+
- **Hybrid Search**: Combines vector + keyword search
11+
- **Semantic Ranking**: AI-powered result re-ranking
12+
- **Managed Service**: No infrastructure to maintain
13+
- **Enterprise Ready**: Built-in security, scaling, and SLA
14+
15+
## Installation
16+
17+
```bash
18+
dotnet add package EasyAppDev.Blazor.AutoComplete.AI.AzureSearch
19+
```
20+
21+
## Quick Start
22+
23+
### 1. Configure Services
24+
25+
```csharp
26+
// Program.cs
27+
builder.Services.AddAutoCompleteAzureSearch<Product>(
28+
endpoint: "https://mysearch.search.windows.net",
29+
apiKey: "your-admin-key",
30+
indexName: "products",
31+
options => {
32+
options.EnableSemanticRanking = true;
33+
options.SemanticConfigurationName = "my-semantic-config";
34+
},
35+
textSelector: p => $"{p.Name} {p.Description}",
36+
idSelector: p => p.Id.ToString());
37+
38+
// Register embedding generator
39+
builder.Services.AddAutoCompleteVectorSearch<Product>(
40+
openAiApiKey: "sk-...");
41+
```
42+
43+
### 2. Use the Component
44+
45+
```razor
46+
@using EasyAppDev.Blazor.AutoComplete.AI
47+
48+
<VectorAutoComplete TItem="Product"
49+
TextField="@(p => p.Name)"
50+
@bind-Value="@selectedProduct"
51+
Placeholder="Semantic search..." />
52+
```
53+
54+
## Configuration Options
55+
56+
| Option | Description | Default |
57+
|--------|-------------|---------|
58+
| `Endpoint` | Azure Search endpoint | Required |
59+
| `ApiKey` | Admin API key | Required |
60+
| `IndexName` | Search index name | Required |
61+
| `EnableSemanticRanking` | Use semantic ranker | `false` |
62+
| `VectorFieldName` | Vector field in index | `embedding` |
63+
| `TopK` | Max results to return | `10` |
64+
65+
## Hybrid Search
66+
67+
Azure AI Search combines vector similarity with traditional keyword matching:
68+
69+
```csharp
70+
options.EnableHybridSearch = true;
71+
options.HybridSearchWeight = 0.5f; // 50% vector, 50% keyword
72+
```
73+
74+
## Creating an Index
75+
76+
Use Azure Portal or SDK to create an index with a vector field:
77+
78+
```json
79+
{
80+
"name": "products",
81+
"fields": [
82+
{ "name": "id", "type": "Edm.String", "key": true },
83+
{ "name": "name", "type": "Edm.String", "searchable": true },
84+
{ "name": "embedding", "type": "Collection(Edm.Single)", "dimensions": 1536, "vectorSearchProfile": "default" }
85+
]
86+
}
87+
```
88+
89+
## License
90+
91+
MIT
15.9 KB
Loading

src/EasyAppDev.Blazor.AutoComplete.AI.CosmosDb/EasyAppDev.Blazor.AutoComplete.AI.CosmosDb.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@
1919
<NoWarn>$(NoWarn);IL2026;IL3050</NoWarn>
2020
</PropertyGroup>
2121

22+
<!-- Package README and Icon -->
23+
<ItemGroup>
24+
<None Include="README.md" Pack="true" PackagePath="\" />
25+
<None Include="icon.png" Pack="true" PackagePath="\" />
26+
</ItemGroup>
27+
2228
<ItemGroup>
2329
<ProjectReference Include="..\EasyAppDev.Blazor.AutoComplete.AI\EasyAppDev.Blazor.AutoComplete.AI.csproj" />
2430
</ItemGroup>
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# EasyAppDev.Blazor.AutoComplete.AI.CosmosDb
2+
3+
Azure Cosmos DB integration for semantic search with the Blazor AutoComplete component.
4+
5+
[![NuGet](https://img.shields.io/nuget/v/EasyAppDev.Blazor.AutoComplete.AI.CosmosDb.svg)](https://www.nuget.org/packages/EasyAppDev.Blazor.AutoComplete.AI.CosmosDb/)
6+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7+
8+
## Features
9+
10+
- **Multi-Model Database**: NoSQL + vector search
11+
- **Global Distribution**: Low latency worldwide
12+
- **Integrated NoSQL**: Store documents with embeddings
13+
- **Enterprise SLA**: 99.999% availability
14+
15+
## Installation
16+
17+
```bash
18+
dotnet add package EasyAppDev.Blazor.AutoComplete.AI.CosmosDb
19+
```
20+
21+
## Quick Start
22+
23+
### 1. Configure Services
24+
25+
```csharp
26+
// Program.cs
27+
builder.Services.AddAutoCompleteCosmosDb<Product>(
28+
endpoint: "https://myaccount.documents.azure.com:443/",
29+
key: "your-cosmos-key",
30+
databaseName: "myapp",
31+
containerName: "products",
32+
options => {
33+
options.VectorIndexType = VectorIndexType.DiskANN;
34+
options.Dimensions = 1536;
35+
},
36+
textSelector: p => $"{p.Name} {p.Description}",
37+
idSelector: p => p.Id.ToString());
38+
39+
// Register embedding generator
40+
builder.Services.AddAutoCompleteVectorSearch<Product>(
41+
openAiApiKey: "sk-...");
42+
```
43+
44+
### 2. Use the Component
45+
46+
```razor
47+
@using EasyAppDev.Blazor.AutoComplete.AI
48+
49+
<VectorAutoComplete TItem="Product"
50+
TextField="@(p => p.Name)"
51+
@bind-Value="@selectedProduct"
52+
Placeholder="Semantic search..." />
53+
```
54+
55+
## Configuration Options
56+
57+
| Option | Description | Default |
58+
|--------|-------------|---------|
59+
| `Endpoint` | Cosmos DB endpoint | Required |
60+
| `Key` | Primary key | Required |
61+
| `DatabaseName` | Database name | Required |
62+
| `ContainerName` | Container name | Required |
63+
| `VectorIndexType` | Index type | `DiskANN` |
64+
| `Dimensions` | Vector dimensions | `1536` |
65+
| `PartitionKeyPath` | Partition key | `/id` |
66+
67+
## Vector Index Types
68+
69+
| Type | Description |
70+
|------|-------------|
71+
| `Flat` | Exact search, smaller datasets |
72+
| `QuantizedFlat` | Compressed, balanced |
73+
| `DiskANN` | Large scale, best performance |
74+
75+
## Container Setup
76+
77+
Enable vector search on container:
78+
79+
```csharp
80+
var containerProperties = new ContainerProperties("products", "/id")
81+
{
82+
VectorEmbeddingPolicy = new VectorEmbeddingPolicy(
83+
new Collection<Embedding> {
84+
new Embedding {
85+
Path = "/embedding",
86+
DataType = VectorDataType.Float32,
87+
Dimensions = 1536,
88+
DistanceFunction = DistanceFunction.Cosine
89+
}
90+
})
91+
};
92+
```
93+
94+
## Integrated Document Storage
95+
96+
Store full documents with embeddings:
97+
98+
```csharp
99+
public class ProductDocument
100+
{
101+
public string Id { get; set; }
102+
public string Name { get; set; }
103+
public string Description { get; set; }
104+
public float[] Embedding { get; set; } // Auto-populated
105+
}
106+
```
107+
108+
## License
109+
110+
MIT
15.9 KB
Loading

src/EasyAppDev.Blazor.AutoComplete.AI.Pinecone/EasyAppDev.Blazor.AutoComplete.AI.Pinecone.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@
1919
<NoWarn>$(NoWarn);IL2026;IL3050</NoWarn>
2020
</PropertyGroup>
2121

22+
<!-- Package README and Icon -->
23+
<ItemGroup>
24+
<None Include="README.md" Pack="true" PackagePath="\" />
25+
<None Include="icon.png" Pack="true" PackagePath="\" />
26+
</ItemGroup>
27+
2228
<ItemGroup>
2329
<ProjectReference Include="..\EasyAppDev.Blazor.AutoComplete.AI\EasyAppDev.Blazor.AutoComplete.AI.csproj" />
2430
</ItemGroup>
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# EasyAppDev.Blazor.AutoComplete.AI.Pinecone
2+
3+
Pinecone integration for semantic search with the Blazor AutoComplete component.
4+
5+
[![NuGet](https://img.shields.io/nuget/v/EasyAppDev.Blazor.AutoComplete.AI.Pinecone.svg)](https://www.nuget.org/packages/EasyAppDev.Blazor.AutoComplete.AI.Pinecone/)
6+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7+
8+
## Features
9+
10+
- **Serverless**: No infrastructure to manage
11+
- **Namespaces**: Organize vectors by category
12+
- **Automatic Scaling**: Handles any volume
13+
- **Low Latency**: Optimized for real-time search
14+
15+
## Installation
16+
17+
```bash
18+
dotnet add package EasyAppDev.Blazor.AutoComplete.AI.Pinecone
19+
```
20+
21+
## Quick Start
22+
23+
### 1. Configure Services
24+
25+
```csharp
26+
// Program.cs
27+
builder.Services.AddAutoCompletePinecone<Product>(
28+
apiKey: "your-pinecone-api-key",
29+
environment: "us-east-1-aws",
30+
indexName: "products",
31+
options => {
32+
options.Namespace = "production";
33+
options.TopK = 10;
34+
},
35+
textSelector: p => $"{p.Name} {p.Description}",
36+
idSelector: p => p.Id.ToString());
37+
38+
// Register embedding generator
39+
builder.Services.AddAutoCompleteVectorSearch<Product>(
40+
openAiApiKey: "sk-...");
41+
```
42+
43+
### 2. Use the Component
44+
45+
```razor
46+
@using EasyAppDev.Blazor.AutoComplete.AI
47+
48+
<VectorAutoComplete TItem="Product"
49+
TextField="@(p => p.Name)"
50+
@bind-Value="@selectedProduct"
51+
Placeholder="Semantic search..." />
52+
```
53+
54+
## Configuration Options
55+
56+
| Option | Description | Default |
57+
|--------|-------------|---------|
58+
| `ApiKey` | Pinecone API key | Required |
59+
| `Environment` | Pinecone environment | Required |
60+
| `IndexName` | Index name | Required |
61+
| `Namespace` | Vector namespace | `""` (default) |
62+
| `TopK` | Max results | `10` |
63+
| `IncludeMetadata` | Return metadata | `true` |
64+
65+
## Namespaces
66+
67+
Organize vectors by category or tenant:
68+
69+
```csharp
70+
options.Namespace = "category-electronics";
71+
// or
72+
options.Namespace = $"tenant-{tenantId}";
73+
```
74+
75+
## Metadata Filtering
76+
77+
Filter results by metadata:
78+
79+
```csharp
80+
options.Filter = new Dictionary<string, object> {
81+
{ "category", "Electronics" },
82+
{ "inStock", true }
83+
};
84+
```
85+
86+
## Creating an Index
87+
88+
Use Pinecone console or SDK:
89+
90+
```python
91+
import pinecone
92+
93+
pinecone.create_index(
94+
name="products",
95+
dimension=1536,
96+
metric="cosine"
97+
)
98+
```
99+
100+
## License
101+
102+
MIT

0 commit comments

Comments
 (0)