如何改善/预处理文本(在特殊情况下),以便嵌入和LLM能够具有更好的上下文?

3

我一直在努力设置本地文档,将其导入vectordb并作为LLM上下文的嵌入使用。

问题是,本地文档非常高级(请查看下面的详细信息)。它被分块并进行了嵌入后,

  • 当询问与标题相关的问题时,只返回前几个文本块(例如:heading_1:项目列表 --- 当向vectordb询问关于heading_1时,它只返回包含heading_1的少数嵌入块)。
  • 某些问题还捕获了前一个点的(语句/项目符号)数据以进行回答(例如:1. 项目1:blah blah \n 项目2:foo foo ---- 当询问有关项目2的问题时,向量数据库也会返回项目1的"blah blah")。

大多数情况下,返回的是部分嵌入,有时即使信息存在,也不会返回嵌入...

更多信息 -

本地文件-非常高级。主要包含关于主题的项目/更新/陈述的项目列表(PDF文件) pdf阅读器-PyMuPdf vecordb-Chroma LLM-GPT4ALL 句子转换器-all-MiniLM-L6-v2 (顺便说一下,我是一名数据工程师,在做这个过程中学习...)
我猜这是因为缺乏上下文(模型不知道,并且嵌入也不知道)。所以我计划给文档添加更多上下文,方法如下:
- 识别标题和项目列表,并添加上下文,例如“以下/以上是项目列表…” - (只是一个想法)创建一个嵌套的无结构数据字典(如何-使用PyMuPdf,可以访问文本的大小,因此使用它来创建嵌套的字典,其中标题是键,内容或子项是值) - 或者只是按(标题,内容)拆分,并将其作为单独的源推送到vectordb,并附带一些元数据
这些方法有效吗?还是有更好的解决方案?(在这一点上,训练模型将是最后的手段)
1个回答

0
你有没有考虑过:
增大块大小以获得更全面的上下文?
来自doctran的转换器?也许在你的情况下询问可能会有用?
此外,如果没有一个好的文件示例,很难回答你的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接