From 17eee5f775996311256747fac4c345e568cd8e0b Mon Sep 17 00:00:00 2001 From: Marco Minerva Date: Fri, 2 Aug 2024 14:56:19 +0200 Subject: [PATCH] Optimize query performance and memory usage --- SqlDatabaseVectorSearch/Program.cs | 3 +++ SqlDatabaseVectorSearch/Services/VectorSearchService.cs | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/SqlDatabaseVectorSearch/Program.cs b/SqlDatabaseVectorSearch/Program.cs index 77be2b3..00b3dd7 100644 --- a/SqlDatabaseVectorSearch/Program.cs +++ b/SqlDatabaseVectorSearch/Program.cs @@ -20,6 +20,9 @@ var appSettings = builder.Services.ConfigureAndGet(builder.Configur builder.Services.AddSqlServer(builder.Configuration.GetConnectionString("SqlConnection"), options => { options.UseVectorSearch(); +}, options => +{ + options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); }); builder.Services.AddMemoryCache(); diff --git a/SqlDatabaseVectorSearch/Services/VectorSearchService.cs b/SqlDatabaseVectorSearch/Services/VectorSearchService.cs index 5f376ef..8a90832 100644 --- a/SqlDatabaseVectorSearch/Services/VectorSearchService.cs +++ b/SqlDatabaseVectorSearch/Services/VectorSearchService.cs @@ -57,7 +57,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG public async Task> GetDocumentsAsync() { - var documents = await dbContext.Documents.OrderBy(d => d.Name).AsNoTracking() + var documents = await dbContext.Documents.OrderBy(d => d.Name) .Select(d => new Document(d.Id, d.Name, d.CreationDate, d.Chunks.Count)) .ToListAsync(); @@ -66,7 +66,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG public async Task> GetDocumentChunksAsync(Guid documentId) { - var documentChunks = await dbContext.DocumentChunks.Where(c => c.DocumentId == documentId).OrderBy(c => c.Index).AsNoTracking() + var documentChunks = await dbContext.DocumentChunks.Where(c => c.DocumentId == documentId).OrderBy(c => c.Index) .Select(c => new DocumentChunk(c.Id, c.Index, c.Content, null)) .ToListAsync(); @@ -75,7 +75,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG public async Task GetDocumentChunkEmbeddingAsync(Guid documentId, Guid documentChunkId) { - var documentChunk = await dbContext.DocumentChunks.Where(c => c.Id == documentChunkId && c.DocumentId == documentId).AsNoTracking() + var documentChunk = await dbContext.DocumentChunks.Where(c => c.Id == documentChunkId && c.DocumentId == documentId) .Select(c => new DocumentChunk(c.Id, c.Index, c.Content, c.Embedding)) .FirstOrDefaultAsync();