fix: results by search not order by similarity

This commit is contained in:
2025-10-29 16:24:32 +08:00
parent 01f6003d35
commit fca2b1449f
2 changed files with 5 additions and 6 deletions

View File

@@ -174,6 +174,9 @@ class PeopleStore:
people_orms = session.query(PeopleORM).filter(PeopleORM.id.in_(people_id_list)).filter(
PeopleORM.deleted_at.is_(None)
).all()
# 根据 people_id_list 的顺序对查询结果进行排序
order_map = {pid: idx for idx, pid in enumerate(people_id_list)}
people_orms.sort(key=lambda orm: order_map.get(orm.id, len(order_map)))
for people_orm in people_orms:
people = people_orm.to_people()
peoples.append(people)

View File

@@ -65,10 +65,6 @@ class ChromaDB:
def __init__(self, **kwargs):
"""
Initialize the ChromaDB instance.
Args:
persist_directory: Optional directory to persist the database.
If None, the database will be in-memory only.
"""
config = get_config()
self.embedding_functions = embedding_functions.OpenAIEmbeddingFunction(
@@ -77,6 +73,7 @@ class ChromaDB:
model_name=config.get("voc-engine_embedding", "endpoint"),
)
persist_directory = config.get("chroma_vsdb", "database_dir", fallback=None)
logging.debug(f"persist_directory: {persist_directory}")
if persist_directory:
self.client = chromadb.PersistentClient(
path=persist_directory,
@@ -189,10 +186,9 @@ class ChromaDB:
ids=ids,
include=["documents", "metadatas", "distances"],
)
print("log: results keys: ", results.keys())
print("log: results ids: ", results['ids'])
formatted_results = []
for i in range(len(results['ids'][0])):
logging.info(f"result id: {results['ids'][0][i]}, distance: {results['distances'][0][i]}")
result = {
'id': results['ids'][0][i],
'distance': results['distances'][0][i],