gusye1234 / nano-graphrag

A simple, easy-to-hack GraphRAG implementation
MIT License
1.66k stars 160 forks source link

输入和知识库完全无关的问题,query也能有结果返回, #6

Closed zhaofangtao closed 3 months ago

zhaofangtao commented 3 months ago

老师好。成功insert一个法律文档后做验证,检索时遇到两个问题。

  1. query时让写一段python排序代码,也返回code的结果。请问这和提示词有关系吗还是其他什么原因?如何优化调整呢

  2. 检索时和知识库内容完全无关的问题也有实体等内容返回 eg: INFO:nano-graphrag:Using 20 entites, 0 communities, 0 relations, 3 text units

gusye1234 commented 3 months ago

你好 方便的话可以分享下你的文档给我吗? 我做下测试

zhaofangtao commented 3 months ago

mfd.txt 内容是民法典的电子文本。长的话可以裁剪一下。全部我跑完花了1小时40分钟。我想尝试法律案例依赖知识库给出裁决结论,是不是还要改提示词呢?
还有local和global有什么不同呢,只是通过提示词来影响模型输出结果区别吗? global_map_rag_points,global_reduce_rag_response有什么异同,在readme中没有global_map_rag_points

gusye1234 commented 3 months ago

你是采用的local search对吧?

gusye1234 commented 3 months ago

mfd.txt 内容是民法典的电子文本。长的话可以裁剪一下。全部我跑完花了1小时40分钟。我想尝试法律案例依赖知识库给出裁决结论,是不是还要改提示词呢? 还有local和global有什么不同呢,只是通过提示词来影响模型输出结果区别吗? global_map_rag_points,global_reduce_rag_response有什么异同,在readme中没有global_map_rag_points

你可以分享下如下的东西不? 我这边测试下:

我这边用了你的txt,我这里索引就花了大概5分钟左右,是不是你的网络有点不太好呢?

local和global的区别是在算法上的 前者会使用相似度检索 后者不会。

global_map_rag_points这个prompt是个算法的一步,不需要修改我觉得。global_reduce_rag_response则是真正输出回答的时候用的prompt,如果你觉得输出的格式你不喜欢的话可以优先修改QueryParam.response_type, 然后去修改:

zhaofangtao commented 3 months ago

mfd.txt 内容是民法典的电子文本。长的话可以裁剪一下。全部我跑完花了1小时40分钟。我想尝试法律案例依赖知识库给出裁决结论,是不是还要改提示词呢? 还有local和global有什么不同呢,只是通过提示词来影响模型输出结果区别吗? global_map_rag_points,global_reduce_rag_response有什么异同,在readme中没有global_map_rag_points

你可以分享下如下的东西不? 我这边测试下:

  • 你尝试检索的问题和结果
  • 每个检索问题你希望的结果?

谢谢老师! 是local模式。

尝试检索的问题和结果: 是输入法律案例,结果想要返回相关法律和条款,依据条款给出裁决结论。

输出的结果按自定义模板返回。比如输入案例

案例: 彭某与女友订婚后,根据老家习俗,给了女方10万元彩礼。由于二人聚少离多、经常争吵,最终分手,没有领证结婚。彭某想要回彩礼,却遭女方拒绝,于是提起诉讼。

回复结果:

【法条条款】: ①民法典第1042条规定,禁止包办、买卖婚姻和其他干涉婚姻自由的行为。禁止借婚姻索取财物。②《最高人民法院关于适用婚姻家庭编的解释(一)》(以下简称《婚姻家庭编解释一》)第5条规定,当事人请求返还按照习俗给付的彩礼的,如果查明属于以下情形,人民法院应当予以支持:(一)双方未办理结婚登记手续;(二)双方办理结婚登记手续但确未共同生活;(三)婚前给付并导致给付人生活困难。

【法院判决】: 经法院依据民典法条款调解,女方将彩礼全部返还。

https://k.sina.com.cn/article_2300279655_891b7b6701901amns.html 几个测试案例链接

这只是验证一下效果。后面可能还会找些其他各种法律法规的文本数据集试试。

我用了deepseek的接口和本地ollama的qwen2-7b。 这两个聊天交互都很快。但知识库生成都挺慢。可能是我笔记本电脑问题。 显存 3060, 6G 处理器 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz 2.30 GHz 机带 RAM 32.0 GB (31.7 GB 可用) 系统类型 64 位操作系统, 基于 x64 的处理器

gusye1234 commented 3 months ago

你看看这个回答怎么样:

法典依据

  1. 中华人民共和国民法典(2021年施行)

    • 第一千零四十二条(婚姻自由)

      任何单位和个人不得干涉他人结婚、离婚自由。

    • 第一千零四十三条(婚姻无效)

      下列情形下,婚姻无效: (一)重婚的; (二)有禁止结婚的亲属关系的; (三)婚前患有医学上认为不应当结婚的疾病,婚后尚未治愈的; (四)未到法定婚龄的。

    • 最高人民法院关于适用《中华人民共和国民法典》婚姻家庭编的解释(一)

      • 第五条

        当事人请求返还按照习俗给付的彩礼的,如果查明属于以下情形,人民法院应当予以支持: (一)双方未办理结婚登记手续的; (二)双方办理结婚登记手续但确未共同生活的; (三)婚前给付并导致给付人生活困难的。 前款第(二)、(三)项情形下,应当以双方离婚为条件。

推测的法院判决结果

根据《最高人民法院关于适用<中华人民共和国民法典>婚姻家庭编的解释(一)》第五条以及双方未办理结婚登记手续的事实,彭某的请求符合返还彩礼的法律条件。法院可能判决女方返还彭某的彩礼。

分析理由

  1. 未办理结婚登记手续

    • 依据上述解释的第一条,双方未办理结婚登记手续是返还彩礼的法定条件之一。因此,彭某可以依据这点请求返还彩礼。
  2. 彩礼的性质

    • 彩礼是一种依照习俗而给付的财物,本质上是以婚姻成立为前提的。如果婚姻未成立,给付彩礼的前提条件并不存在,因此可以要求返还。

综上所述,彭某有充分的法律依据要求女友返还10万元的彩礼,法院应会支持他的请求。

如果OK的话我可以把这个例子的代码分享出来

zhaofangtao commented 3 months ago

这个挺好的,可以的,3Q。 我正常输入案例感觉结果和直接问模型返回的差不多,感觉评测知识库效果是个难点。

fclof commented 2 months ago

@gusye1234 请问这个例子的代码已经分享出来了吗?在哪里可以看到呀?