代码参考
- https://github.com/honeyandme/RAGQnASystem
- https://github.com/LongxingTan/open-retrievals
TLDR
if '疾病症状' in entities and '疾病' not in entities:
sql_q = "match (a:疾病)-[r:疾病的症状]->(b:疾病症状 {名称:'%s'}) return a.名称" % (entities['疾病症状'])
res = list(client.run(sql_q).data()[0].values())
# print('res=',res)
if len(res)>0:
entities['疾病'] = random.choice(res)
all_en = "、".join(res)
prompt+=f"<提示>用户有{entities['疾病症状']}的情况,知识库推测其可能是得了{all_en}。请注意这只是一个推测,你需要明确告知用户这一点。</提示>"
根据实体确定图数据库查询语句,从中查询得到结果。疾病症状和知识库查询结果一起组成prompt,输入大模型中
系统设计
实体识别
- token classification
意图识别
- sequence classification
知识图谱
- graph
对话