Skip to content

Commit aee077b

Browse files
authored
Merge pull request #1923 from giselles-ai/1827-persist-dvs-id-embeddings
Link document embeddings to their parent vector stores
2 parents d34b34d + 184b437 commit aee077b

File tree

6 files changed

+2476
-0
lines changed

6 files changed

+2476
-0
lines changed

apps/studio.giselles.ai/drizzle/schema.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,11 @@ export const documentEmbeddings = pgTable(
442442
"document_embeddings",
443443
{
444444
dbId: serial("db_id").primaryKey(),
445+
documentVectorStoreDbId: integer("document_vector_store_db_id")
446+
.notNull()
447+
.references(() => documentVectorStores.dbId, {
448+
onDelete: "cascade",
449+
}),
445450
documentVectorStoreSourceDbId: integer("document_vector_store_source_db_id")
446451
.notNull()
447452
.references(() => documentVectorStoreSources.dbId, {
@@ -479,6 +484,7 @@ export const documentEmbeddings = pgTable(
479484
sql`(${table.embedding}::halfvec(3072)) halfvec_cosine_ops`,
480485
)
481486
.where(sql`${table.embeddingDimensions} = 3072`),
487+
index("doc_embs_store_idx").on(table.documentVectorStoreDbId),
482488
],
483489
);
484490

@@ -489,6 +495,10 @@ export const documentEmbeddingsRelations = relations(
489495
fields: [documentEmbeddings.documentVectorStoreSourceDbId],
490496
references: [documentVectorStoreSources.dbId],
491497
}),
498+
documentVectorStore: one(documentVectorStores, {
499+
fields: [documentEmbeddings.documentVectorStoreDbId],
500+
references: [documentVectorStores.dbId],
501+
}),
492502
}),
493503
);
494504

apps/studio.giselles.ai/lib/vector-stores/document/database.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ export async function updateDocumentVectorStoreSourceStatus(
7070
}
7171

7272
interface InsertEmbeddingsParams {
73+
storeDbId: number;
7374
sourceDbId: number;
7475
embeddingProfileId: EmbeddingProfileId;
7576
dimensions: EmbeddingDimensions;
@@ -85,6 +86,7 @@ export async function insertDocumentEmbeddings(
8586
params: InsertEmbeddingsParams,
8687
): Promise<void> {
8788
const {
89+
storeDbId,
8890
sourceDbId,
8991
embeddingProfileId,
9092
dimensions,
@@ -98,6 +100,7 @@ export async function insertDocumentEmbeddings(
98100

99101
// Convert embeddings to the format expected by the database
100102
const values = embeddings.map((emb) => ({
103+
documentVectorStoreDbId: storeDbId,
101104
documentVectorStoreSourceDbId: sourceDbId,
102105
embeddingProfileId,
103106
embeddingDimensions: dimensions,

apps/studio.giselles.ai/lib/vector-stores/document/ingest/ingest-document.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ export async function ingestDocument(
211211

212212
// Insert embeddings into database
213213
await insertDocumentEmbeddings({
214+
storeDbId: source.documentVectorStoreDbId,
214215
sourceDbId: source.dbId,
215216
embeddingProfileId,
216217
dimensions: embeddingResult.dimensions as EmbeddingDimensions,
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ALTER TABLE "document_embeddings" ADD COLUMN "document_vector_store_db_id" integer NOT NULL;--> statement-breakpoint
2+
ALTER TABLE "document_embeddings" ADD CONSTRAINT "document_embeddings_document_vector_store_db_id_document_vector_stores_db_id_fk" FOREIGN KEY ("document_vector_store_db_id") REFERENCES "public"."document_vector_stores"("db_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
3+
CREATE INDEX "doc_embs_store_idx" ON "document_embeddings" USING btree ("document_vector_store_db_id");

0 commit comments

Comments
 (0)