wxywb / history_rag

789 stars 102 forks source link

是否可以更换文本 #47

Open zhaostarr opened 4 months ago

zhaostarr commented 4 months ago

大佬好,这是提的第二个Issue,之前提的已经解决了,史先生部署成功了,很有意义的一个项目。再次感谢!

问题:如何用您的项目代码构建一个新的知识库?

背景:我想更换为其他的语料,是不是意味着:我需要重新做一个milvus库?而不是:直接把txt文件丢到文件夹,build就好?

因为我这么做过,问相关的问题,答案就是:不知道。

所以想请教您:如何用您的项目代码构建一个新的知识库?谢谢!

ZS

wxywb commented 4 months ago

cfgs/config.yaml 有一个collection_name为‘history_rag’ milvus以collection来管理你的文件,所以你可以通过: 1.使用remove命令删除当前collection的文件 2.新建一个collection,只要你把collection_name改为‘history_rag2’,再次运行cli.py,那么你读取和写入都会在一个全新的collection上。 做完后,你可能会遇到回答“不知道”,使用 ask -d 可以返回出来retrieve的你的文档片段,如果retrieve的内容是你新的文件,那说明确实没找到,你可以先测试,再发进一步的结果。

zhaostarr commented 4 months ago

我去,大佬回复的也太快了!我明天试试!感谢。

zhaostarr commented 3 months ago

您好,删除并更换文本后,遇到empty response的问题,请问如何继续?

我做了什么?

  1. REMOVE: 我试着用remove,把之前build的文件删除了。您原文说的是删除当前collection,我不懂怎么删除,就remove 后面加上 每一个文件名,删掉了所有的已经build的txt
  2. 新建文件库:然后我在data文件夹里,新建了一个txtdata文件夹,把我的文档放入其中。第一行起了标题,第二行以下做了缩进。注:全是txt文件。
  3. 重新Build:每个文件都分别用build .data/.txt给构建了一次了(这里指的是文件名,而不是我放了通配符),反馈:索引构建完成。注:但是建立的特别快,0.5秒的时间。

结果:

  1. Ask命令:回复的都不是不知道了,是”empty response” (苦笑)
  2. Ask -D:回复也是“empty response”

总结: 看来我是没有替换数据库成功,我该修正哪里呢?

zhaostarr commented 3 months ago

补充数据样本作为附件: 23yi.txt

wxywb commented 3 months ago

https://github.com/wxywb/history_rag/issues/63 参考这个回答

zhaostarr commented 3 months ago

63 参考这个回答

谢谢!

这就去看。

zhaostarr commented 2 months ago

您好,修改后成功build英文内容,也可以识别,但是有新的疑问:

Issue: 无法回答相应的问题。

背景:

  1. 我根据您的#63 这个问题下的答案指导,修改了三点。成功build了新的文本
  2. 但问问题的时候,反馈“不知道”,或者“无法回答相关问题。”
  3. 同时反馈我的文本的信息(反馈的内容是正确的)不是特定历史事件或任务的详细信息。

请问是不是需要重新训练模型?毕竟这个模型是为了回答历史问题而训练的。

谢谢!

wxywb commented 2 months ago

使用ask -d 看看你的结果

zhaostarr commented 2 months ago

使用ask -d 看看你的结果

请看结果,

  1. 是否写入写文本:新文本内容是成功写进去了。可以retrieve回来。如附件1 附件1-ask -d

  2. 是否可以回答非历史相关的问题,貌似目前无法。如附件2 附件2-ask

wxywb commented 2 months ago

你这个语料不适合作为RAG, RAG的本质上是根据query找到数据,利用数据来回答的你问题, 在这里你用的文本是试卷,而不是知识。所以无法根据这些试卷来回答你的问题,符合你所需要的知识库的答案是你自己准备好的,比如:

以下是一些包含where的知识点和例句: 定语从句:用于引导地点的定语从句。例:The town where I was born is famous for its music festival. 疑问副词:询问地点。例:Where do you live? 连接副词:连接描述地点的两个句子。例:She moved to New York, where she started her own business. 非限定性定语从句:添加额外地点信息,不限制名词。例:London, where the Queen lives, is attracting many tourists. 与'in which'互换:在更正式的文体中可用'in which'替换。例:The house where I grew up is very old. (或The house in which I grew up is very old.)

zhaostarr commented 2 months ago

你这个语料不适合作为RAG, RAG的本质上是根据query找到数据,利用数据来回答的你问题, 在这里你用的文本是试卷,而不是知识。所以无法根据这些试卷来回答你的问题,符合你所需要的知识库的答案是你自己准备好的,比如:

以下是一些包含where的知识点和例句: 定语从句:用于引导地点的定语从句。例:The town where I was born is famous for its music festival. 疑问副词:询问地点。例:Where do you live? 连接副词:连接描述地点的两个句子。例:She moved to New York, where she started her own business. 非限定性定语从句:添加额外地点信息,不限制名词。例:London, where the Queen lives, is attracting many tourists. 与'in which'互换:在更正式的文体中可用'in which'替换。例:The house where I grew up is very old. (或The house in which I grew up is very old.)

谢谢您的耐心解释。还有两个小疑惑。

  1. 其实我的第一个问题是:请给我一些包含where的例句。反馈是 “...没有直接提供含有where”的句子。

但是文本中,有很多含有where的句子。这和原来项目中,“请列出谈到诸葛亮的史料?”

这种问题,在自然语言理解上,本质上是一样。这种情况也是不能回答的吗?

  1. 在您原来的项目中。我看到gpt4.0也能根据提炼出来的史料,回答一些不是现成答案的问题。为什么换成英文试卷,它就无法回答一些总结类的问题了呢?

只是脑子可能还没转过来。

我明白您的字面意思,但是没懂内涵。

wxywb commented 2 months ago

https://github.com/wxywb/history_rag/blob/ea66d21129ad22ae37375f11fd86f96172354bc3/executor.py#L35-L56 那这样的话,我认为你可能需要修改一下这里

zhaostarr commented 2 months ago

按照您的指导调整了,已经可以回答类似之前历史库“有答案”的相关的问题了,

例如,“请列出包含where的句子”。

非常感谢。

Issue: 如何让他回答一些需要识别、总结归纳的问题?类似“请找出几个定语从句这样的问题”,它的回答是:“原文中没有直接提供定语从句的例子,因此无法直接引用文本中的句子作为定语从句的例子。”

背景:

  1. 我记得您之前告诉我原因。“这个语料不适合作为RAG, RAG的本质上是根据query找到数据,利用数据来回答的你问题,”,以及“...答案是你自己准备好的...”

  2. 想请教的是:chatgpt本身是可以回答的类似“请找出几个定语从句这样的问题的”。

但您通过RAG流程的文档切片、向量化、向量检索的方式提供给他数据,他为什么就不能回答了,给他的输入的我理解也是语料呀?

因此:如果希望他能够回答类似问题,是不是需要新的路径?这个路径我可能走不通了?还是说在这个路径中嵌入一个什么流程,让他开启这个识别、总结和归纳的功能?

感谢!