Advertisement
ivandrofly

RAGSimple-02MEAIVectorsMemory: MongoDb

Mar 16th, 2025 (edited)
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.83 KB | None | 0 0
  1. using Microsoft.Extensions.AI;
  2. using Microsoft.Extensions.VectorData;
  3. // using Microsoft.SemanticKernel.Connectors.InMemory;
  4. using Microsoft.SemanticKernel.Connectors.MongoDB;
  5.  
  6. // var vectorStore = new InMemoryVectorStore();
  7.  
  8. var mongoClient = new MongoDB.Driver.MongoClient("mongodb://localhost:27017"); // ()
  9. MongoDBVectorStore mongoDbVectorStore = new MongoDBVectorStore(mongoClient.GetDatabase("movies"), new MongoDBVectorStoreOptions());
  10.  
  11. // var moviesCollection = mongoDbVectorStore.GetCollection<int, MovieVector<int>>("movies"); //>()
  12.  
  13. // get movie list
  14. var movies = mongoDbVectorStore.GetCollection<string, MovieVector<string>>("movies");
  15. // await movies.CreateCollectionIfNotExistsAsync();
  16. var movieData = MovieFactory<string>.GetMovieVectorList();
  17.  
  18. // get embeddings generator and generate embeddings for movies
  19. IEmbeddingGenerator<string, Embedding<float>> generator =
  20.     new OllamaEmbeddingGenerator(new Uri("http://localhost:11434/"), "all-minilm");
  21. foreach (var movie in movieData)
  22. {
  23.     movie.Vector = await generator.GenerateEmbeddingVectorAsync(movie.Description);
  24.     await movies.UpsertAsync(movie);
  25. }
  26.  
  27. // perform the search
  28. var query = "A family friendly movie that includes ogres and dragons";
  29. var queryEmbedding = await generator.GenerateEmbeddingVectorAsync(query);
  30. var searchOptions = new Microsoft.Extensions.VectorData.VectorSearchOptions<MovieVector<string>>()
  31. {
  32.     Top = 2,
  33.     VectorPropertyName = "Vector",
  34.     IncludeVectors = true,
  35. };
  36.  
  37. try
  38. {
  39.     var results = await movies.VectorizedSearchAsync(queryEmbedding, searchOptions);
  40.  
  41.     await foreach (var result in results.Results)
  42.     {
  43.         Console.WriteLine($"Title: {result.Record.Title}");
  44.         Console.WriteLine($"Description: {result.Record.Description}");
  45.         Console.WriteLine($"Score: {result.Score}");
  46.         Console.WriteLine();
  47.     }
  48. }
  49. catch (Exception e)
  50. {
  51.     Console.WriteLine(e);
  52.     throw;
  53. }
  54.  
  55.  
  56.  
  57.  
  58. <Project Sdk="Microsoft.NET.Sdk">
  59.   <PropertyGroup>
  60.     <OutputType>Exe</OutputType>
  61.     <TargetFramework>net9.0</TargetFramework>
  62.     <RootNamespace>MEAIVector01_</RootNamespace>
  63.     <ImplicitUsings>enable</ImplicitUsings>
  64.     <Nullable>enable</Nullable>
  65.   </PropertyGroup>
  66.   <ItemGroup>
  67.     <PackageReference Include="Microsoft.Extensions.AI.Ollama" Version="9.3.0-preview.1.25161.3" />
  68.     <PackageReference Include="Microsoft.Extensions.VectorData.Abstractions" Version="9.0.0-preview.1.25161.1" />
  69.     <PackageReference Include="Microsoft.SemanticKernel.Connectors.InMemory" Version="1.41.0-preview" />
  70.     <PackageReference Include="Microsoft.SemanticKernel.Connectors.MongoDB" Version="1.41.0-preview" />
  71.     <PackageReference Include="MongoDB.Driver" Version="3.2.1" />
  72.   </ItemGroup>
  73.   <ItemGroup>
  74.     <ProjectReference Include="..\MEAIVectorsShared\MEAIVectorsShared.csproj" />
  75.   </ItemGroup>
  76. </Project>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement