Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是否可以更换文本 #47

Open
zhaostarr opened this issue Feb 23, 2024 · 13 comments
Open

是否可以更换文本 #47

zhaostarr opened this issue Feb 23, 2024 · 13 comments

Comments

@zhaostarr
Copy link

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

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

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

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

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

ZS

@wxywb
Copy link
Owner

wxywb commented Feb 23, 2024

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
Copy link
Author

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

@zhaostarr
Copy link
Author

您好,删除并更换文本后,遇到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
Copy link
Author

zhaostarr commented Apr 3, 2024

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

@wxywb
Copy link
Owner

wxywb commented Apr 7, 2024

#63
参考这个回答

@zhaostarr
Copy link
Author

#63 参考这个回答

谢谢!

这就去看。

@zhaostarr
Copy link
Author

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

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

背景:

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

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

谢谢!

@wxywb
Copy link
Owner

wxywb commented Apr 22, 2024

使用ask -d 看看你的结果

@zhaostarr
Copy link
Author

zhaostarr commented Apr 22, 2024

使用ask -d 看看你的结果

请看结果,

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

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

@wxywb
Copy link
Owner

wxywb commented Apr 23, 2024

你这个语料不适合作为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
Copy link
Author

zhaostarr commented Apr 24, 2024

你这个语料不适合作为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
Copy link
Owner

wxywb commented Apr 25, 2024

history_rag/executor.py

Lines 35 to 56 in ea66d21

QA_PROMPT_TMPL_STR = (
"请你仔细阅读相关内容,结合历史资料进行回答,每一条史资料使用'出处:《书名》原文内容'的形式标注 (如果回答请清晰无误地引用原文,先给出回答,再贴上对应的原文,使用《书名》[]对原文进行标识),,如果发现资料无法得到答案,就回答不知道 \n"
"搜索的相关历史资料如下所示.\n"
"---------------------\n"
"{context_str}\n"
"---------------------\n"
"问题: {query_str}\n"
"答案: "
)
QA_SYSTEM_PROMPT = "你是一个严谨的历史知识问答智能体,你会仔细阅读历史材料并给出准确的回答,你的回答都会非常准确,因为你在回答的之后,使用在《书名》[]内给出原文用来支撑你回答的证据.并且你会在开头说明原文是否有回答所需的知识"
REFINE_PROMPT_TMPL_STR = (
"你是一个历史知识回答修正机器人,你严格按以下方式工作"
"1.只有原答案为不知道时才进行修正,否则输出原答案的内容\n"
"2.修正的时候为了体现你的精准和客观,你非常喜欢使用《书名》[]将原文展示出来.\n"
"3.如果感到疑惑的时候,就用原答案的内容回答。"
"新的知识: {context_msg}\n"
"问题: {query_str}\n"
"原答案: {existing_answer}\n"
"新答案: "
)

那这样的话,我认为你可能需要修改一下这里

@zhaostarr
Copy link
Author

zhaostarr commented Apr 25, 2024

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

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

非常感谢。

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

背景:

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

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

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

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

感谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants