mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-17 14:55:23 +00:00
fianl : vector-search-feature
This commit is contained in:
parent
12ebdbae81
commit
e0afd7f496
1 changed files with 15 additions and 8 deletions
|
|
@ -566,7 +566,9 @@ class Oracle23aiClient(VectorDBBase):
|
||||||
for row in results:
|
for row in results:
|
||||||
ids[qid].append(row[0])
|
ids[qid].append(row[0])
|
||||||
documents[qid].append(row[1].read() if isinstance(row[1], oracledb.LOB) else str(row[1]))
|
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]))
|
distances[qid].append(float(row[3]))
|
||||||
|
|
||||||
log.info(f"Search completed. Found {sum(len(ids[i]) for i in range(num_queries))} total results.")
|
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]]
|
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]]
|
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
|
||||||
log.info(f"Query completed. Found {len(ids)} results.")
|
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(
|
return GetResult(
|
||||||
ids=ids,
|
ids=ids,
|
||||||
|
|
@ -700,7 +704,8 @@ class Oracle23aiClient(VectorDBBase):
|
||||||
|
|
||||||
ids = [[row[0] for row in results]]
|
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]]
|
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(
|
return GetResult(
|
||||||
ids=ids,
|
ids=ids,
|
||||||
|
|
@ -745,9 +750,11 @@ class Oracle23aiClient(VectorDBBase):
|
||||||
params = {'collection_name': collection_name}
|
params = {'collection_name': collection_name}
|
||||||
|
|
||||||
if ids:
|
if ids:
|
||||||
# Use proper parameterized query for IDs
|
# 🔧 FIXED: Use proper parameterized query to prevent SQL injection
|
||||||
id_list = ",".join([f"'{id}'" for id in ids])
|
placeholders = ','.join([f':id_{i}' for i in range(len(ids))])
|
||||||
query += f" AND id IN ({id_list})"
|
query += f" AND id IN ({placeholders})"
|
||||||
|
for i, id_val in enumerate(ids):
|
||||||
|
params[f'id_{i}'] = id_val
|
||||||
|
|
||||||
if filter:
|
if filter:
|
||||||
for i, (key, value) in enumerate(filter.items()):
|
for i, (key, value) in enumerate(filter.items()):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue