fix(cache): 兼容元组形式的 embedding_result

get_embedding 方法的返回值可能是一个包含向量和模型名称的元组
This commit is contained in:
minecraft1024a
2025-08-19 20:19:51 +08:00
committed by Windpicker-owo
parent dcecd9cf7d
commit 64e3d6d56b

View File

@@ -134,7 +134,9 @@ class CacheManager:
if semantic_query and self.embedding_model: if semantic_query and self.embedding_model:
embedding_result = await self.embedding_model.get_embedding(semantic_query) embedding_result = await self.embedding_model.get_embedding(semantic_query)
if embedding_result: if embedding_result:
validated_embedding = self._validate_embedding(embedding_result) # embedding_result是一个元组(embedding_vector, model_name),取第一个元素
embedding_vector = embedding_result[0] if isinstance(embedding_result, tuple) else embedding_result
validated_embedding = self._validate_embedding(embedding_vector)
if validated_embedding is not None: if validated_embedding is not None:
query_embedding = np.array([validated_embedding], dtype='float32') query_embedding = np.array([validated_embedding], dtype='float32')
@@ -250,12 +252,14 @@ class CacheManager:
) )
# 写入语义缓存 # 写入语义缓存
if semantic_query and self.embedding_model: if semantic_query and self.embedding_model and self.chroma_collection:
try:
embedding_result = await self.embedding_model.get_embedding(semantic_query) embedding_result = await self.embedding_model.get_embedding(semantic_query)
if embedding_result: if embedding_result:
validated_embedding = self._validate_embedding(embedding_result) # embedding_result是一个元组(embedding_vector, model_name),取第一个元素
embedding_vector = embedding_result[0] if isinstance(embedding_result, tuple) else embedding_result
validated_embedding = self._validate_embedding(embedding_vector)
if validated_embedding is not None: if validated_embedding is not None:
try:
embedding = np.array([validated_embedding], dtype='float32') embedding = np.array([validated_embedding], dtype='float32')
# 写入 L1 Vector # 写入 L1 Vector
new_id = self.l1_vector_index.ntotal new_id = self.l1_vector_index.ntotal