mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
### Description Updating KernelSyntaxExamples to use the same environment variable keys as the Integration tests. This is a step toward making these tests simpler to run, and even running them as automation in CI tests. This is a first pass -- more cleanup to be done. ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows SK Contribution Guidelines (https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) - [X] The code follows the .NET coding conventions (https://learn.microsoft.com/dotnet/csharp/fundamentals/coding-style/coding-conventions) verified with `dotnet format` - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄 --------- Co-authored-by: name <email> Co-authored-by: Dmytro Struk <[email protected]>
76 lines
3.5 KiB
C#
76 lines
3.5 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.SemanticKernel;
|
|
using Microsoft.SemanticKernel.Connectors.Memory.Qdrant;
|
|
using Microsoft.SemanticKernel.Memory;
|
|
using RepoUtils;
|
|
|
|
// ReSharper disable once InconsistentNaming
|
|
public static class Example19_Qdrant
|
|
{
|
|
private const string MemoryCollectionName = "qdrant-test";
|
|
|
|
public static async Task RunAsync()
|
|
{
|
|
QdrantMemoryStore memoryStore = new(TestConfiguration.Qdrant.Endpoint, 1536, ConsoleLogger.Log);
|
|
IKernel kernel = Kernel.Builder
|
|
.WithLogger(ConsoleLogger.Log)
|
|
.WithOpenAITextCompletionService("text-davinci-003", TestConfiguration.OpenAI.ApiKey)
|
|
.WithOpenAITextEmbeddingGenerationService("text-embedding-ada-002", TestConfiguration.OpenAI.ApiKey)
|
|
.WithMemoryStorage(memoryStore)
|
|
//.WithQdrantMemoryStore(TestConfiguration.Qdrant.Endpoint, 1536) // This method offers an alternative approach to registering Qdrant memory store.
|
|
.Build();
|
|
|
|
Console.WriteLine("== Printing Collections in DB ==");
|
|
var collections = memoryStore.GetCollectionsAsync();
|
|
await foreach (var collection in collections)
|
|
{
|
|
Console.WriteLine(collection);
|
|
}
|
|
|
|
Console.WriteLine("== Adding Memories ==");
|
|
|
|
var key1 = await kernel.Memory.SaveInformationAsync(MemoryCollectionName, id: "cat1", text: "british short hair");
|
|
var key2 = await kernel.Memory.SaveInformationAsync(MemoryCollectionName, id: "cat2", text: "orange tabby");
|
|
var key3 = await kernel.Memory.SaveInformationAsync(MemoryCollectionName, id: "cat3", text: "norwegian forest cat");
|
|
|
|
Console.WriteLine("== Printing Collections in DB ==");
|
|
collections = memoryStore.GetCollectionsAsync();
|
|
await foreach (var collection in collections)
|
|
{
|
|
Console.WriteLine(collection);
|
|
}
|
|
|
|
Console.WriteLine("== Retrieving Memories Through the Kernel ==");
|
|
MemoryQueryResult? lookup = await kernel.Memory.GetAsync(MemoryCollectionName, "cat1");
|
|
Console.WriteLine(lookup != null ? lookup.Metadata.Text : "ERROR: memory not found");
|
|
|
|
Console.WriteLine("== Retrieving Memories Directly From the Store ==");
|
|
var memory1 = await memoryStore.GetWithPointIdAsync(MemoryCollectionName, key1);
|
|
var memory2 = await memoryStore.GetWithPointIdAsync(MemoryCollectionName, key2);
|
|
var memory3 = await memoryStore.GetWithPointIdAsync(MemoryCollectionName, key3);
|
|
Console.WriteLine(memory1 != null ? memory1.Metadata.Text : "ERROR: memory not found");
|
|
Console.WriteLine(memory2 != null ? memory2.Metadata.Text : "ERROR: memory not found");
|
|
Console.WriteLine(memory3 != null ? memory3.Metadata.Text : "ERROR: memory not found");
|
|
|
|
Console.WriteLine("== Similarity Searching Memories: My favorite color is orange ==");
|
|
var searchResults = kernel.Memory.SearchAsync(MemoryCollectionName, "My favorite color is orange", limit: 3, minRelevanceScore: 0.8);
|
|
|
|
await foreach (var item in searchResults)
|
|
{
|
|
Console.WriteLine(item.Metadata.Text + " : " + item.Relevance);
|
|
}
|
|
|
|
Console.WriteLine("== Removing Collection {0} ==", MemoryCollectionName);
|
|
await memoryStore.DeleteCollectionAsync(MemoryCollectionName);
|
|
|
|
Console.WriteLine("== Printing Collections in DB ==");
|
|
await foreach (var collection in collections)
|
|
{
|
|
Console.WriteLine(collection);
|
|
}
|
|
}
|
|
}
|