fianl : vector-search-feature

This commit is contained in:
Oracle Public Cloud User 2025-07-07 17:25:16 +00:00
parent 12ebdbae81
commit e0afd7f496

View file

@ -566,7 +566,9 @@ class Oracle23aiClient(VectorDBBase):
for row in results:
ids[qid].append(row[0])
documents[qid].append(row[1].read() if isinstance(row[1], oracledb.LOB) else str(row[1]))
metadatas[qid].append(row[2].read() if isinstance(row[2], oracledb.LOB) else row[2])
# 🔧 FIXED: Parse JSON metadata properly
metadata_str = row[2].read() if isinstance(row[2], oracledb.LOB) else row[2]
metadatas[qid].append(self._json_to_metadata(metadata_str))
distances[qid].append(float(row[3]))
log.info(f"Search completed. Found {sum(len(ids[i]) for i in range(num_queries))} total results.")
@ -640,8 +642,10 @@ class Oracle23aiClient(VectorDBBase):
ids = [[row[0] for row in results]]
documents = [[row[1].read() if isinstance(row[1], oracledb.LOB) else str(row[1]) for row in results]]
metadatas = [[row[2].read() if isinstance(row[2], oracledb.LOB) else row[2] for row in results]]
log.info(f"Query completed. Found {len(ids)} results.")
# 🔧 FIXED: Parse JSON metadata properly
metadatas = [[self._json_to_metadata(row[2].read() if isinstance(row[2], oracledb.LOB) else row[2]) for row in results]]
log.info(f"Query completed. Found {len(results)} results.")
return GetResult(
ids=ids,
@ -700,8 +704,9 @@ class Oracle23aiClient(VectorDBBase):
ids = [[row[0] for row in results]]
documents = [[row[1].read() if isinstance(row[1], oracledb.LOB) else str(row[1]) for row in results]]
metadatas = [[row[2].read() if isinstance(row[2], oracledb.LOB) else row[2] for row in results]]
# 🔧 FIXED: Parse JSON metadata properly
metadatas = [[self._json_to_metadata(row[2].read() if isinstance(row[2], oracledb.LOB) else row[2]) for row in results]]
return GetResult(
ids=ids,
documents=documents,
@ -745,9 +750,11 @@ class Oracle23aiClient(VectorDBBase):
params = {'collection_name': collection_name}
if ids:
# Use proper parameterized query for IDs
id_list = ",".join([f"'{id}'" for id in ids])
query += f" AND id IN ({id_list})"
# 🔧 FIXED: Use proper parameterized query to prevent SQL injection
placeholders = ','.join([f':id_{i}' for i in range(len(ids))])
query += f" AND id IN ({placeholders})"
for i, id_val in enumerate(ids):
params[f'id_{i}'] = id_val
if filter:
for i, (key, value) in enumerate(filter.items()):