【求助帖】如何实现更精准的知识库经验请教 #603
Labels
No Label
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: HswOAuth/llm_course#603
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
1、目前基于dify、fastgpt等基于上传的文档进行切片、向量化,但均需要人工参与确认,如何实现业务提供的一堆文件进行比较精准的向量化;PDF、word、excel、txt、markdown等格式,如何解放大量人工
2、知识库向量化后,结合大模型实现知识问答,如何限制用户问答时不回答无关知识库的问题,现在测试用提示词等效果不好
请求各位大神有什么好的经验分享下
(1)语义分割和分块: 不要简单地使用固定大小的分块方法,而是对文档进行语义分割。将文档分解成有意义的单元,例如段落、章节,甚至是基于主题的片段。这样做有助于在每个块内保留上下文信息,从而产生更准确的向量表示。
(2)上下文感知嵌入: 使用对上下文敏感的嵌入模型。像 Sentence-BERT 或基于 Transformer 的模型,旨在理解词语在其周围文本环境中的含义。
(3)微调嵌入模型: 对于高度特定的业务领域,微调预训练的嵌入模型。、
(4)元数据整合: 不仅要向量化文本内容,还要在向量化过程中包含相关的元数据(例如,文档标题、作者、日期、章节标题)。
(1)将所有文档转换为一致且可处理的格式,理想情况下是纯文本或 Markdown。
(2)一旦文档转换为基于文本的格式,就可以自动化提取相关信息。
(3)使用工作流程自动化工具来编排整个文档处理流程,从格式转换到向量化和数据加载。
提高相似度阈值: 在当前的向量检索基础上,尝试提高相似度阈值,只保留更相关的文档片段。
尝试 LangChain 等框架: 使用 LangChain 等框架,利用其提供的组件构建更完善的知识库问答系统,并尝试更高级的检索和答案生成策略。
答案生成阶段的约束:明确指示模型只回答知识库内的问题: 在提示词中,更明确地指示模型,如果问题无法在提供的知识库中找到答案,则不要编造答案,而是直接回答“无法回答”或“知识库中没有相关信息”。
“无法回答”机制: 训练或微调模型,使其能够识别问题是否超出知识库范围,并学会输出明确的“无法回答”或类似的声明。这可以通过以下方式实现:
微调 (Fine-tuning): 使用包含“无关问题”和“无法回答”答案的数据集,对模型进行微调。
提示工程 (Prompt Engineering) + 后处理 (Post-processing): 在提示词中加入明确的指令,并在模型输出后,通过规则或模型判断答案是否来源于知识库,如果不是,则强制输出“无法回答”。
事实性验证 (Fact Verification): 在生成答案后,可以尝试进行事实性验证,确保生成的答案能够从提供的知识库片段中找到依据。如果无法验证,则认为答案不可靠,并返回“无法回答”。