Skip to content

Commit ceffc44

Browse files
authored
fix: Add support for a metadata column named id (#302)
1 parent 9cd623b commit ceffc44

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

src/langchain_google_cloud_sql_pg/async_vectorstore.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,11 @@ async def __aadd_embeddings(
281281
)
282282
insert_stmt = f'INSERT INTO "{self.schema_name}"."{self.table_name}"("{self.id_column}", "{self.content_column}", "{self.embedding_column}"{metadata_col_names}'
283283
values = {
284-
"id": id,
284+
"langchain_id": id,
285285
"content": content,
286286
"embedding": str([float(dimension) for dimension in embedding]),
287287
}
288-
values_stmt = "VALUES (:id, :content, :embedding"
288+
values_stmt = "VALUES (:langchain_id, :content, :embedding"
289289

290290
# Add metadata
291291
extra = copy.deepcopy(metadata)

tests/test_async_vectorstore.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
docs = [
3939
Document(page_content=texts[i], metadata=metadatas[i]) for i in range(len(texts))
4040
]
41+
id_column_as_metadata = [{"id": str(i)} for i in range(len(texts))]
4142

4243
embeddings = [embeddings_service.embed_query(texts[i]) for i in range(len(texts))]
4344

@@ -154,6 +155,29 @@ async def test_post_init(self, engine):
154155
metadata_json_column="mymeta",
155156
)
156157

158+
async def test_id_metadata_column(self, engine):
159+
table_name = "id_metadata" + str(uuid.uuid4())
160+
await engine._ainit_vectorstore_table(
161+
table_name,
162+
VECTOR_SIZE,
163+
metadata_columns=[Column("id", "TEXT")],
164+
)
165+
custom_vs = await AsyncPostgresVectorStore.create(
166+
engine,
167+
embedding_service=embeddings_service,
168+
table_name=table_name,
169+
metadata_columns=["id"],
170+
)
171+
ids = [str(uuid.uuid4()) for i in range(len(texts))]
172+
await custom_vs.aadd_texts(texts, id_column_as_metadata, ids)
173+
174+
results = await afetch(engine, f'SELECT * FROM "{table_name}"')
175+
assert len(results) == 3
176+
assert results[0]["id"] == "0"
177+
assert results[1]["id"] == "1"
178+
assert results[2]["id"] == "2"
179+
await aexecute(engine, f'DROP TABLE IF EXISTS "{table_name}"')
180+
157181
async def test_aadd_texts(self, engine, vs):
158182
ids = [str(uuid.uuid4()) for i in range(len(texts))]
159183
await vs.aadd_texts(texts, ids=ids)

0 commit comments

Comments
 (0)