Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.Extensions.AI;
- using Microsoft.Extensions.VectorData;
- // using Microsoft.SemanticKernel.Connectors.InMemory;
- using Microsoft.SemanticKernel.Connectors.MongoDB;
- // var vectorStore = new InMemoryVectorStore();
- var mongoClient = new MongoDB.Driver.MongoClient("mongodb://localhost:27017"); // ()
- MongoDBVectorStore mongoDbVectorStore = new MongoDBVectorStore(mongoClient.GetDatabase("movies"), new MongoDBVectorStoreOptions());
- // var moviesCollection = mongoDbVectorStore.GetCollection<int, MovieVector<int>>("movies"); //>()
- // get movie list
- var movies = mongoDbVectorStore.GetCollection<string, MovieVector<string>>("movies");
- // await movies.CreateCollectionIfNotExistsAsync();
- var movieData = MovieFactory<string>.GetMovieVectorList();
- // get embeddings generator and generate embeddings for movies
- IEmbeddingGenerator<string, Embedding<float>> generator =
- new OllamaEmbeddingGenerator(new Uri("http://localhost:11434/"), "all-minilm");
- foreach (var movie in movieData)
- {
- movie.Vector = await generator.GenerateEmbeddingVectorAsync(movie.Description);
- await movies.UpsertAsync(movie);
- }
- // perform the search
- var query = "A family friendly movie that includes ogres and dragons";
- var queryEmbedding = await generator.GenerateEmbeddingVectorAsync(query);
- var searchOptions = new Microsoft.Extensions.VectorData.VectorSearchOptions<MovieVector<string>>()
- {
- Top = 2,
- VectorPropertyName = "Vector",
- IncludeVectors = true,
- };
- try
- {
- var results = await movies.VectorizedSearchAsync(queryEmbedding, searchOptions);
- await foreach (var result in results.Results)
- {
- Console.WriteLine($"Title: {result.Record.Title}");
- Console.WriteLine($"Description: {result.Record.Description}");
- Console.WriteLine($"Score: {result.Score}");
- Console.WriteLine();
- }
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- throw;
- }
- <Project Sdk="Microsoft.NET.Sdk">
- <PropertyGroup>
- <OutputType>Exe</OutputType>
- <TargetFramework>net9.0</TargetFramework>
- <RootNamespace>MEAIVector01_</RootNamespace>
- <ImplicitUsings>enable</ImplicitUsings>
- <Nullable>enable</Nullable>
- </PropertyGroup>
- <ItemGroup>
- <PackageReference Include="Microsoft.Extensions.AI.Ollama" Version="9.3.0-preview.1.25161.3" />
- <PackageReference Include="Microsoft.Extensions.VectorData.Abstractions" Version="9.0.0-preview.1.25161.1" />
- <PackageReference Include="Microsoft.SemanticKernel.Connectors.InMemory" Version="1.41.0-preview" />
- <PackageReference Include="Microsoft.SemanticKernel.Connectors.MongoDB" Version="1.41.0-preview" />
- <PackageReference Include="MongoDB.Driver" Version="3.2.1" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\MEAIVectorsShared\MEAIVectorsShared.csproj" />
- </ItemGroup>
- </Project>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement