Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions docs/ai/vector-stores/define-your-data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ Use the <xref:Microsoft.Extensions.VectorData.VectorStoreVectorAttribute> attrib
It's also possible to use <xref:Microsoft.Extensions.VectorData.VectorStoreVectorAttribute> on properties that don't have a vector type, for example, a property of type `string`. When a property is decorated in this way, you need to provide an <xref:Microsoft.Extensions.AI.IEmbeddingGenerator> instance to the vector store. When upserting the record, the text that's in the `string` property is automatically converted and stored as a vector in the database. (It's not possible to retrieve a vector using this mechanism.)

```csharp
[VectorStoreVector(Dimensions: 4, DistanceFunction = DistanceFunction.CosineSimilarity, IndexKind = IndexKind.Hnsw)]
[VectorStoreVector(dimensions: 4, DistanceFunction = DistanceFunction.CosineSimilarity, IndexKind = IndexKind.Hnsw)]
public string DescriptionEmbedding { get; set; }
```

Expand All @@ -138,7 +138,7 @@ The following table shows the parameters for `VectorStoreVectorAttribute`.

| Parameter | Required | Description |
|------------------------------------------------------------------------------------|:--------:|-------------|
| <xref:Microsoft.Extensions.VectorData.VectorStoreVectorAttribute.Dimensions> | Yes | The number of dimensions that the vector has. This is required when creating a vector index for a collection. |
| `dimensions` | Yes | The number of dimensions that the vector has. This is required when creating a vector index for a collection. Pass as a constructor argument: `[VectorStoreVector(dimensions: 1536)]`. |
| <xref:Microsoft.Extensions.VectorData.VectorStoreVectorAttribute.IndexKind> | No | The type of index to index the vector with. Default varies by vector store type. |
| <xref:Microsoft.Extensions.VectorData.VectorStoreVectorAttribute.DistanceFunction> | No | The type of function to use when doing vector comparison during vector search over this vector. Default varies by vector store type. |
| <xref:Microsoft.Extensions.VectorData.VectorStoreVectorAttribute.StorageName> | No | Can be used to supply an alternative name for the property in the database. This parameter is not supported by all providers, for example, where alternatives like `JsonPropertyNameAttribute` is supported. |
Expand Down Expand Up @@ -174,7 +174,7 @@ Vector databases are all about storing *embeddings* - or numerical representatio
You can define your vector property as `float[]` or `ReadOnlyMemory<float>`, representing the embedding directly, and generate embeddings yourself before each operation:

```csharp
[VectorStoreVector(Dimensions: 1536)]
[VectorStoreVector(dimensions: 1536)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
```

Expand All @@ -196,7 +196,7 @@ The recommended approach is to configure an <xref:Microsoft.Extensions.AI.IEmbed
First, define the vector property as `string`:

```csharp
[VectorStoreVector(Dimensions: 1536)]
[VectorStoreVector(dimensions: 1536)]
public string DescriptionEmbedding { get; set; }
```

Expand Down
8 changes: 4 additions & 4 deletions docs/ai/vector-stores/how-to/build-vector-search-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ Complete the following steps to create a .NET console app that can:
dotnet add package Azure.Identity
dotnet add package Azure.AI.OpenAI
dotnet add package Microsoft.Extensions.AI.OpenAI
dotnet add package Microsoft.SemanticKernel.Connectors.InMemory --prerelease
dotnet add package CommunityToolkit.VectorData.InMemory
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package System.Linq.AsyncEnumerable
Expand All @@ -75,7 +75,7 @@ Complete the following steps to create a .NET console app that can:

- [`Azure.Identity`](https://www.nuget.org/packages/Azure.Identity) provides [`Microsoft Entra ID`](/entra/fundamentals/whatis) token authentication support across the Azure SDK using classes such as `DefaultAzureCredential`.
- [`Azure.AI.OpenAI`](https://www.nuget.org/packages/Azure.AI.OpenAI) is the official package for using OpenAI's .NET library with the Azure OpenAI Service.
- [`Microsoft.SemanticKernel.Connectors.InMemory`](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.InMemory) provides an in-memory vector store class to hold queryable vector data records. It also brings in [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.VectorData.Abstractions), which enables CRUD and search operations on vector stores.
- [`CommunityToolkit.VectorData.InMemory`](https://www.nuget.org/packages/CommunityToolkit.VectorData.InMemory) provides an in-memory vector store class to hold queryable vector data records. It also brings in [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.VectorData.Abstractions), which enables CRUD and search operations on vector stores.
- [Microsoft.Extensions.Configuration](https://www.nuget.org/packages/Microsoft.Extensions.Configuration) provides an implementation of key-value pair&mdash;based configuration.
- [`Microsoft.Extensions.Configuration.UserSecrets`](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.UserSecrets) is a user secrets configuration provider implementation for `Microsoft.Extensions.Configuration`.

Expand All @@ -85,7 +85,7 @@ Complete the following steps to create a .NET console app that can:

```bash
dotnet package add Microsoft.Extensions.AI.OpenAI --prerelease
dotnet package add Microsoft.SemanticKernel.Connectors.InMemory --prerelease
dotnet package add CommunityToolkit.VectorData.InMemory
dotnet package add Microsoft.Extensions.Configuration
dotnet package add Microsoft.Extensions.Configuration.UserSecrets
dotnet package add System.Linq.AsyncEnumerable
Expand All @@ -94,7 +94,7 @@ Complete the following steps to create a .NET console app that can:
The following list describes each package in the `VectorDataAI` app:

- [`Microsoft.Extensions.AI.OpenAI`](https://www.nuget.org/packages/Microsoft.Extensions.AI.OpenAI) provides AI abstractions for OpenAI-compatible models or endpoints. This library also includes the official [`OpenAI`](https://www.nuget.org/packages/OpenAI) library for the OpenAI service API as a dependency.
- [`Microsoft.SemanticKernel.Connectors.InMemory`](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.InMemory) provides an in-memory vector store class to hold queryable vector data records. It also brings in [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.VectorData.Abstractions), which enables CRUD and search operations on vector stores.
- [`CommunityToolkit.VectorData.InMemory`](https://www.nuget.org/packages/CommunityToolkit.VectorData.InMemory) provides an in-memory vector store class to hold queryable vector data records. It also brings in [`Microsoft.Extensions.VectorData.Abstractions`](https://www.nuget.org/packages/Microsoft.Extensions.VectorData.Abstractions), which enables CRUD and search operations on vector stores.
- [Microsoft.Extensions.Configuration](https://www.nuget.org/packages/Microsoft.Extensions.Configuration) provides an implementation of key-value pair&mdash;based configuration.
- [`Microsoft.Extensions.Configuration.UserSecrets`](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.UserSecrets) is a user secrets configuration provider implementation for `Microsoft.Extensions.Configuration`.

Expand Down
4 changes: 2 additions & 2 deletions docs/ai/vector-stores/how-to/use-vector-stores.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ This article shows you how to use the key features of the library.
Install a provider package for your vector database. The `Microsoft.Extensions.VectorData.Abstractions` package is brought in automatically as a transitive dependency. The following example uses the in-memory provider for development and testing:

```dotnetcli
dotnet package add Microsoft.SemanticKernel.Connectors.InMemory --prerelease
dotnet package add CommunityToolkit.VectorData.InMemory
```

For production scenarios, replace `Microsoft.SemanticKernel.Connectors.InMemory` with the provider for your database. For available providers, see [Out-of-the-box Vector Store providers](/semantic-kernel/concepts/vector-store-connectors/out-of-the-box-connectors/). (Despite the inclusion of "SemanticKernel" in the provider package names, these providers have nothing to do with Semantic Kernel and are usable anywhere in .NET, including Agent Framework.)
For production scenarios, replace `CommunityToolkit.VectorData.InMemory` with the provider for your database. For available providers, see [Out-of-the-box Vector Store providers](/semantic-kernel/concepts/vector-store-connectors/out-of-the-box-connectors/).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should/can we replace the link?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am trying to get this particular document updated in MicrosoftDocs/semantic-kernel-docs#429, but I agree that in the long term we should provide our own list (it would not contain python-specific or deprecated connectors)


## Define a data model

Expand Down
4 changes: 2 additions & 2 deletions docs/ai/vector-stores/how-to/vector-store-data-ingestion.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ The rest of these instructions assume that you're using a container with these s

## Create your project

Create a new project and add NuGet package references for the [Redis provider](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.Redis), the [OpenXml package](https://www.nuget.org/packages/DocumentFormat.OpenXml) to read the Word document, and the Azure OpenAI packages for generating embeddings.
Create a new project and add NuGet package references for the [Redis provider](https://www.nuget.org/packages/CommunityToolkit.VectorData.Redis), the [OpenXml package](https://www.nuget.org/packages/DocumentFormat.OpenXml) to read the Word document, and the Azure OpenAI packages for generating embeddings.

```dotnetcli
dotnet new console --framework net8.0 --name VectorIngest
cd VectorIngest
dotnet package add Azure.AI.OpenAI
dotnet package add Microsoft.Extensions.AI.OpenAI
dotnet package add Microsoft.SemanticKernel.Connectors.Redis --prerelease
dotnet package add CommunityToolkit.VectorData.Redis
dotnet package add DocumentFormat.OpenXml
```

Expand Down
2 changes: 1 addition & 1 deletion docs/ai/vector-stores/manage-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class Hotel
[VectorStoreData(IsFullTextIndexed = true)]
public required string Description { get; set; }

[VectorStoreVector(Dimensions: 1536, DistanceFunction = DistanceFunction.CosineSimilarity)]
[VectorStoreVector(dimensions: 1536, DistanceFunction = DistanceFunction.CosineSimilarity)]
public required string DescriptionEmbedding { get; set; }

[VectorStoreData(IsIndexed = true)]
Expand Down
11 changes: 4 additions & 7 deletions docs/ai/vector-stores/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Here's a minimal end-to-end example that creates a collection, upserts records,
```csharp
using Microsoft.Extensions.AI;
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.InMemory;
using CommunityToolkit.VectorData.InMemory;

// Configure an embedding generator to transform text to embeddings
IEmbeddingGenerator<string, Embedding<float>> embeddingGenerator = ...;
Expand Down Expand Up @@ -85,22 +85,19 @@ class Movie
[VectorStoreData]
public string Title { get; set; }

[VectorStoreVector(Dimensions: 1536)]
[VectorStoreVector(dimensions: 1536)]
public string Description { get; set; }
}
```

## Vector store providers

The `Microsoft.Extensions.VectorData.Abstractions` package defines the abstractions, and separate [provider packages](/semantic-kernel/concepts/vector-store-connectors/out-of-the-box-connectors/) provide implementations for specific vector databases. Choose the provider that matches your vector database, for example, [Microsoft.SemanticKernel.Connectors.AzureAISearch](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.AzureAISearch).

> [!NOTE]
> Despite the inclusion of "SemanticKernel" in the package names, these providers have nothing to do with Semantic Kernel and are usable anywhere in .NET, including Agent Framework.
The `Microsoft.Extensions.VectorData.Abstractions` package defines the abstractions, and separate provider packages provide implementations for specific vector databases. Choose the provider that matches your vector database, for example, [CommunityToolkit.VectorData.AzureAISearch](https://www.nuget.org/packages/CommunityToolkit.VectorData.AzureAISearch).

All providers implement the same <xref:Microsoft.Extensions.VectorData.VectorStore> and <xref:Microsoft.Extensions.VectorData.VectorStoreCollection`2> abstract classes, so you can switch between them without changing your application logic.

> [!TIP]
> Use the in-memory provider ([Microsoft.SemanticKernel.Connectors.InMemory](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.InMemory)) during initial development/prototyping - it doesn't require any external service or configuration, and you can swap it out for a production provider later. Avoid using the InMemory provider for testing, as there can be important differences between this provider and your production database. Consider using [testcontainers](https://dotnet.testcontainers.org/) to run tests against your production database system.
> Use the in-memory provider ([CommunityToolkit.VectorData.InMemory](https://www.nuget.org/packages/CommunityToolkit.VectorData.InMemory)) during initial development/prototyping - it doesn't require any external service or configuration, and you can swap it out for a production provider later. Avoid using the InMemory provider for testing, as there can be important differences between this provider and your production database. Consider using [testcontainers](https://dotnet.testcontainers.org/) to run tests against your production database system.

## Related content

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
public int Key { get; set; }

[VectorStoreData]
public string Name { get; set; }

Check warning on line 11 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/CloudService.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Non-nullable property 'Name' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the property as nullable.

Check warning on line 11 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/CloudService.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Non-nullable property 'Name' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the property as nullable.

[VectorStoreData]
public string Description { get; set; }

Check warning on line 14 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/CloudService.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Non-nullable property 'Description' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the property as nullable.

Check warning on line 14 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/CloudService.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Non-nullable property 'Description' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the property as nullable.

[VectorStoreVector(
Dimensions: 384,
dimensions: 384,
DistanceFunction = DistanceFunction.CosineSimilarity)]
public ReadOnlyMemory<float> Vector { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using Microsoft.Extensions.AI;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.InMemory;
using CommunityToolkit.VectorData.InMemory;
using System.Linq;
using VectorDataAI;

Expand Down Expand Up @@ -46,12 +46,12 @@
// <SnippetEmbeddingGenerator>
// Load the configuration values.
IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];

Check warning on line 49 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/Program.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Converting null literal or possible null value to non-nullable type.

Check warning on line 49 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/Program.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Converting null literal or possible null value to non-nullable type.
string model = config["AZURE_OPENAI_GPT_NAME"];

Check warning on line 50 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/Program.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Converting null literal or possible null value to non-nullable type.

Check warning on line 50 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/Program.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Converting null literal or possible null value to non-nullable type.

// Create the embedding generator.
IEmbeddingGenerator<string, Embedding<float>> generator =
new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())

Check warning on line 54 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/Program.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Possible null reference argument for parameter 'uriString' in 'Uri.Uri(string uriString)'.

Check warning on line 54 in docs/ai/vector-stores/snippets/chat-with-data/azure-openai/Program.cs

View workflow job for this annotation

GitHub Actions / snippets-build

Possible null reference argument for parameter 'uriString' in 'Uri.Uri(string uriString)'.
.GetEmbeddingClient(deploymentName: model)
.AsIEmbeddingGenerator();
// </SnippetEmbeddingGenerator>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="10.7.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.9" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="10.0.9" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.InMemory" Version="1.55.0-preview" />
<PackageReference Include="CommunityToolkit.VectorData.InMemory" Version="1.0.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ internal class CloudService
public string Description { get; set; }

[VectorStoreVector(
Dimensions: 384,
dimensions: 384,
DistanceFunction = DistanceFunction.CosineSimilarity)]
public ReadOnlyMemory<float> Vector { get; set; }
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Microsoft.Extensions.AI;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.InMemory;
using CommunityToolkit.VectorData.InMemory;
using OpenAI;
using System.ClientModel;
using VectorDataAI;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="10.7.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.9" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="10.0.9" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.InMemory" Version="1.55.0-preview" />
<PackageReference Include="CommunityToolkit.VectorData.InMemory" Version="1.0.0" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@
<PackageReference Include="Azure.Search.Documents" Version="12.0.0" />
<PackageReference Include="Microsoft.Extensions.AI" Version="10.7.0" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="10.7.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.AzureAISearch" Version="1.*-*" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.InMemory" Version="1.*-*" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.*-*" />
<PackageReference Include="CommunityToolkit.VectorData.AzureAISearch" Version="1.0.0" />
<PackageReference Include="CommunityToolkit.VectorData.InMemory" Version="1.0.0" />
<PackageReference Include="CommunityToolkit.VectorData.Qdrant" Version="1.0.0" />
<PackageReference Include="OpenAI" Version="2.*" />
<PackageReference Include="Qdrant.Client" Version="1.*" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class Hotel
public required string Description { get; set; }

// <VectorStoreVectorAttribute1>
[VectorStoreVector(Dimensions: 4, DistanceFunction = DistanceFunction.CosineSimilarity, IndexKind = IndexKind.Hnsw)]
[VectorStoreVector(dimensions: 4, DistanceFunction = DistanceFunction.CosineSimilarity, IndexKind = IndexKind.Hnsw)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
// </VectorStoreVectorAttribute1>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.Qdrant;
using CommunityToolkit.VectorData.Qdrant;
using Qdrant.Client;

public class DynamicDataModel
Expand Down
2 changes: 1 addition & 1 deletion docs/ai/vector-stores/snippets/how-to/Hotel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public record class Hotel
[VectorStoreData(IsFullTextIndexed = true)]
public string? Description { get; set; }

[VectorStoreVector(Dimensions: 1536, DistanceFunction = DistanceFunction.CosineSimilarity)]
[VectorStoreVector(dimensions: 1536, DistanceFunction = DistanceFunction.CosineSimilarity)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }

[VectorStoreData(IsIndexed = true)]
Expand Down
4 changes: 2 additions & 2 deletions docs/ai/vector-stores/snippets/how-to/HowToSnippets.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
<PackageReference Include="Microsoft.Extensions.AI" Version="10.*" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="10.7.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.*" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.InMemory" Version="1.*-*" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Redis" Version="1.*-*" />
<PackageReference Include="CommunityToolkit.VectorData.InMemory" Version="1.0.0" />
<PackageReference Include="CommunityToolkit.VectorData.Redis" Version="1.0.0" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion docs/ai/vector-stores/snippets/how-to/Program.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.InMemory;
using CommunityToolkit.VectorData.InMemory;

// <CreateVectorStore>
// Create an in-memory vector store (no external service required).
Expand Down
2 changes: 1 addition & 1 deletion docs/ai/vector-stores/snippets/how-to/PutItTogether.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using Microsoft.Extensions.AI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.VectorData;
using Microsoft.SemanticKernel.Connectors.Redis;
using CommunityToolkit.VectorData.Redis;
using VectorIngest;

public class PutItAllTogether
Expand Down
Loading