InternLM / HuixiangDou

HuixiangDou: Overcoming Group Chat Scenarios with LLM-based Technical Assistance
https://openxlab.org.cn/apps/detail/tpoisonooo/huixiangdou-web
BSD 3-Clause "New" or "Revised" License
1.45k stars 125 forks source link

想请教一下如何检索excel文件 #191

Open leezpeng opened 6 months ago

leezpeng commented 6 months ago

我尝试把excel转成json格式放进向量数据库,但是检索效果很差。放进prompt里又太长了。想问一下怎么实现对excel文件的问答

tpoisonooo commented 6 months ago

方便给个例子么?

我这边也是把表格 pack 成 json,不出 bug 的话,精度和普通文本没区别才对。

关于 prompt 太长

完全可以满足长文本需求

tpoisonooo commented 6 months ago

希望给个文件 + 问题,我测一下。

leezpeng commented 6 months ago

好的。 2023年分数线.xlsx 例如这个表格,我将其转换成json格式以后放进Chroma数据库中,这个数据库除了这个表格以外还有其他很多关于学校信息的内容。当我询问“学校23年分数线是多少”的时候,数据库检索到的信息并不包括这个表格的json格式。我个人猜测是json内容大部分都是符号,数字,和query的相似度太低导致无法检索到?

关于prompt太长:我们最开始把json放进prompt里交给大模型(我们使用的是文心4.0的接口),虽然他回答的很好,但表格很多,全放进prompt里面的话响应时间太长,费用也太高。所以我们想到把json放进向量数据库中检索的方法,于是产生了上述的问题。

非常感谢您的解答!

tpoisonooo commented 6 months ago

https://openxlab.org.cn/apps/detail/tpoisonooo/huixiangdou-web

账号: 20240329版本测试 密码:123

image

  1. 好答案来自好问题。 “学校23年分数线是多少” 这句有效信息量是 “23年 / 分数线 ”,没提先进制造学院。 如果其他文档也包含 23年分数线,肯定优先用其他文档。

  2. 按豆哥的处理逻辑,我们弄成了 json 形式; text2vec 也能命中这个文档

  3. 这里答复 517。 你的文档里 517 是最高分、566 是最低分。 模型按逻辑来

leezpeng commented 6 months ago

感谢您的回复。此外还有一个问题想要询问,就是数据库在检索时会将json段落“截断”,导致模型无法识别这个表格。我该怎么做才能让数据库在检索的时候不要把json给切断呢?非常感谢! image

tpoisonooo commented 6 months ago

这个切断不影响。

  1. text2vec / rerank 模型表达能力有限,你不可能保证整个 json 就在一个 chunk 内部。
  2. rerank 的作用是找到目标文件,然后靠 longcontext 读整个文件,而不只是一个 chunk。 只读一小片必然丢失上下文导致幻觉
tpoisonooo commented 6 months ago

碰到大文件,一个 json 几十 MB 很正常。