fix(lightrag): 修复只有实体没有关系的chunk处理逻辑
- 只有实体没有关系时,继续处理,而不是直接return - 当只有实体而没有关系的图片在高阶查询关系时会返回空,这里优化返回,当没有关系时降级为local查询
This commit is contained in:
@@ -412,15 +412,17 @@ async def extract_entities(
|
|||||||
):
|
):
|
||||||
all_relationships_data.append(await result)
|
all_relationships_data.append(await result)
|
||||||
|
|
||||||
if not len(all_entities_data):
|
if not len(all_entities_data) and not len(all_relationships_data):
|
||||||
logger.warning("Didn't extract any entities, maybe your LLM is not working")
|
|
||||||
return None
|
|
||||||
if not len(all_relationships_data):
|
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Didn't extract any relationships, maybe your LLM is not working"
|
"Didn't extract any entities or relationships, maybe your LLM is not working"
|
||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
if not len(all_entities_data):
|
||||||
|
logger.warning("Didn't extract any entities")
|
||||||
|
if not len(all_relationships_data):
|
||||||
|
logger.warning("Didn't extract any relationships")
|
||||||
|
|
||||||
if entity_vdb is not None:
|
if entity_vdb is not None:
|
||||||
data_for_vdb = {
|
data_for_vdb = {
|
||||||
compute_mdhash_id(dp["entity_name"], prefix="ent-"): {
|
compute_mdhash_id(dp["entity_name"], prefix="ent-"): {
|
||||||
@@ -630,6 +632,13 @@ async def _build_query_context(
|
|||||||
text_chunks_db,
|
text_chunks_db,
|
||||||
query_param,
|
query_param,
|
||||||
)
|
)
|
||||||
|
if (
|
||||||
|
hl_entities_context == ""
|
||||||
|
and hl_relations_context == ""
|
||||||
|
and hl_text_units_context == ""
|
||||||
|
):
|
||||||
|
logger.warn("No high level context found. Switching to local mode.")
|
||||||
|
query_param.mode = "local"
|
||||||
if query_param.mode == "hybrid":
|
if query_param.mode == "hybrid":
|
||||||
entities_context, relations_context, text_units_context = combine_contexts(
|
entities_context, relations_context, text_units_context = combine_contexts(
|
||||||
[hl_entities_context, ll_entities_context],
|
[hl_entities_context, ll_entities_context],
|
||||||
@@ -865,7 +874,7 @@ async def _get_edge_data(
|
|||||||
results = await relationships_vdb.query(keywords, top_k=query_param.top_k)
|
results = await relationships_vdb.query(keywords, top_k=query_param.top_k)
|
||||||
|
|
||||||
if not len(results):
|
if not len(results):
|
||||||
return None
|
return "", "", ""
|
||||||
|
|
||||||
edge_datas = await asyncio.gather(
|
edge_datas = await asyncio.gather(
|
||||||
*[knowledge_graph_inst.get_edge(r["src_id"], r["tgt_id"]) for r in results]
|
*[knowledge_graph_inst.get_edge(r["src_id"], r["tgt_id"]) for r in results]
|
||||||
|
Reference in New Issue
Block a user