From c1180d3a4facfc1e1555ef137c4100d610ad9bb4 Mon Sep 17 00:00:00 2001 From: Marco Minerva Date: Fri, 19 Jul 2024 11:01:44 +0200 Subject: [PATCH] Optimize chunks retrieval --- SqlDatabaseVectorSearch/Services/ChatService.cs | 5 ++--- SqlDatabaseVectorSearch/Services/VectorSearchService.cs | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SqlDatabaseVectorSearch/Services/ChatService.cs b/SqlDatabaseVectorSearch/Services/ChatService.cs index cbadcc4..17ed62f 100644 --- a/SqlDatabaseVectorSearch/Services/ChatService.cs +++ b/SqlDatabaseVectorSearch/Services/ChatService.cs @@ -2,7 +2,6 @@ using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Options; using Microsoft.SemanticKernel.ChatCompletion; -using SqlDatabaseVectorSearch.DataAccessLayer.Entities; using SqlDatabaseVectorSearch.Settings; namespace SqlDatabaseVectorSearch.Services; @@ -34,7 +33,7 @@ public class ChatService(IMemoryCache cache, IChatCompletionService chatCompleti return reformulatedQuestion.Content!; } - public async Task AskQuestionAsync(Guid conversationId, IEnumerable chunks, string question) + public async Task AskQuestionAsync(Guid conversationId, IEnumerable chunks, string question) { var chat = new ChatHistory("""" """ @@ -51,7 +50,7 @@ public class ChatService(IMemoryCache cache, IChatCompletionService chatCompleti """); // TODO: Ensure that chunks are not too long, according to the model max token. - foreach (var result in chunks.Select(c => c.Content)) + foreach (var result in chunks) { prompt.AppendLine(result); prompt.AppendLine("---"); diff --git a/SqlDatabaseVectorSearch/Services/VectorSearchService.cs b/SqlDatabaseVectorSearch/Services/VectorSearchService.cs index 9936636..4968c98 100644 --- a/SqlDatabaseVectorSearch/Services/VectorSearchService.cs +++ b/SqlDatabaseVectorSearch/Services/VectorSearchService.cs @@ -104,6 +104,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG var chunks = await dbContext.DocumentChunks .OrderBy(c => EF.Functions.VectorDistance("cosine", c.Embedding, questionEmbedding.ToArray())) + .Select(c => c.Content) .Take(appSettings.MaxRelevantChunks) .ToListAsync();