我一直在努力设置本地文档,将其导入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,并附带一些元数据
这些方法有效吗?还是有更好的解决方案?(在这一点上,训练模型将是最后的手段)