Optimize query performance and memory usage

This commit is contained in:
Marco Minerva
2024-08-02 14:56:19 +02:00
parent 1264b7f502
commit 17eee5f775
2 changed files with 6 additions and 3 deletions
+3
View File
@@ -20,6 +20,9 @@ var appSettings = builder.Services.ConfigureAndGet<AppSettings>(builder.Configur
builder.Services.AddSqlServer<ApplicationDbContext>(builder.Configuration.GetConnectionString("SqlConnection"), options =>
{
options.UseVectorSearch();
}, options =>
{
options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
});
builder.Services.AddMemoryCache();
@@ -57,7 +57,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG
public async Task<IEnumerable<Document>> 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<IEnumerable<DocumentChunk>> 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<DocumentChunk?> 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();