From 12c50c556f61db4c32bfcce5c43352557af39588 Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 11 May 2025 14:14:33 +0800 Subject: [PATCH] . --- app/api/search.py | 57 +++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/app/api/search.py b/app/api/search.py index 21fdaf9..d736f1d 100644 --- a/app/api/search.py +++ b/app/api/search.py @@ -114,32 +114,38 @@ def search_docs(request: QueryRequest, user_id: str = Query(..., description=" - # 假设 response 是查询的返回结果 - if response and hasattr(response, 'json'): - response_data = response.json() # 提取 JSON 数据 - # 检查 response_data 是否为列表且不为空 - if isinstance(response_data, list) and len(response_data) > 0: - # 返回检索结果 - result = { - "user_id": user_id, - "query": request.query, - "results": [ - {"score": float(node.score or 0), "text": node.get_content()} # 确保从 Node 中获取文本 - for node in response_data - ] - } - logger.info(f"Search results for user {user_id}: {result}") - else: - # 如果没有有效结果 - logger.warning("No valid results found in response_data or response_data is not a list.") - result = { - "user_id": user_id, - "query": request.query, - "results": [] # 返回空结果 - } + # 确保 response 是一个有效的列表 + if response and isinstance(response, list): # 检查 response 是否有效且为可迭代的列表 + # 返回检索结果 + result = { + "user_id": user_id, + "query": request.query, + "results": [] + } + + # 遍历 response 中的每个 node + for i, node in enumerate(response): + # 确保每个 node 具有必要的方法和属性 + if hasattr(node, 'get_content') and hasattr(node, 'embedding'): + result["results"].append({ + "score": float(node.score or 0), # 评分(如果有的话) + "text": node.get_content() # 获取文本内容 + }) + # 打印相关信息(如果需要日志记录) + logger.info(f"Result {i + 1}:") + logger.info(f" Text: {node.get_content()}") # 打印文本 + embedding = node.embedding + logger.info(f" Embedding (Vector): {embedding}") # 打印向量 + logger.info(f" Embedding Length: {len(embedding)}") # 打印向量长度(维度) + else: + logger.warning(f"Result {i + 1} is missing necessary attributes.") + + # 如果没有有效的结果 + if not result["results"]: + logger.warning("No valid results found in response.") else: - logger.warning("Response is not iterable or invalid.") + logger.warning("No valid results found in response or response is not a list.") result = { "user_id": user_id, "query": request.query, @@ -148,6 +154,9 @@ def search_docs(request: QueryRequest, user_id: str = Query(..., description=" + + + logger.info(f"Search results for user {user_id}: {result}") return result