refactor: optimize batch insert handling in PGVectorStorage

Changes made:
- Updated the batch insert logic to use a dictionary for row values, improving clarity and ensuring compatibility with the database execution method.
- Adjusted the insert query construction to utilize named parameters, enhancing readability and maintainability.

Impact:
- Streamlines the insertion process and reduces potential errors related to parameter binding.

Testing:
- Functionality remains intact; no new tests required as existing tests cover the insert operations.
This commit is contained in:
BukeLy 2025-11-20 00:27:17 +08:00
parent 722f639fa5
commit 01bdaac180

View file

@ -2326,20 +2326,20 @@ class PGVectorStorage(BaseVectorStorage):
# Insert batch into new table # Insert batch into new table
for row in rows: for row in rows:
# Get column names and values # Get column names and values as dictionary (execute expects dict)
columns = list(row.keys()) row_dict = dict(row)
values = list(row.values())
# Build insert query # Build insert query with named parameters
placeholders = ", ".join([f"${i+1}" for i in range(len(columns))]) columns = list(row_dict.keys())
columns_str = ", ".join(columns) columns_str = ", ".join(columns)
placeholders = ", ".join([f"${i+1}" for i in range(len(columns))])
insert_query = f""" insert_query = f"""
INSERT INTO {table_name} ({columns_str}) INSERT INTO {table_name} ({columns_str})
VALUES ({placeholders}) VALUES ({placeholders})
ON CONFLICT DO NOTHING ON CONFLICT DO NOTHING
""" """
await db.execute(insert_query, values) await db.execute(insert_query, row_dict)
migrated_count += len(rows) migrated_count += len(rows)
logger.info( logger.info(