mirror of
https://github.com/marcominerva/SqlDatabaseVectorSearch.git
synced 2026-06-20 12:23:10 +00:00
Optimize query performance and memory usage
This commit is contained in:
@@ -20,6 +20,9 @@ var appSettings = builder.Services.ConfigureAndGet<AppSettings>(builder.Configur
|
|||||||
builder.Services.AddSqlServer<ApplicationDbContext>(builder.Configuration.GetConnectionString("SqlConnection"), options =>
|
builder.Services.AddSqlServer<ApplicationDbContext>(builder.Configuration.GetConnectionString("SqlConnection"), options =>
|
||||||
{
|
{
|
||||||
options.UseVectorSearch();
|
options.UseVectorSearch();
|
||||||
|
}, options =>
|
||||||
|
{
|
||||||
|
options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.Services.AddMemoryCache();
|
builder.Services.AddMemoryCache();
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG
|
|||||||
|
|
||||||
public async Task<IEnumerable<Document>> GetDocumentsAsync()
|
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))
|
.Select(d => new Document(d.Id, d.Name, d.CreationDate, d.Chunks.Count))
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG
|
|||||||
|
|
||||||
public async Task<IEnumerable<DocumentChunk>> GetDocumentChunksAsync(Guid documentId)
|
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))
|
.Select(c => new DocumentChunk(c.Id, c.Index, c.Content, null))
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ public class VectorSearchService(ApplicationDbContext dbContext, ITextEmbeddingG
|
|||||||
|
|
||||||
public async Task<DocumentChunk?> GetDocumentChunkEmbeddingAsync(Guid documentId, Guid documentChunkId)
|
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))
|
.Select(c => new DocumentChunk(c.Id, c.Index, c.Content, c.Embedding))
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user