用途
document.ai 是一个基于向量数据库与 GPT-3.5 的通用本地知识库方案,目标是为本地知识库提供问答能力。项目作者以 MSD 案例作为示例,探索在垂直领域中的可行性,并说明该方案可以迁移到任何熟悉的领域,而不必拘泥于医疗领域。
主要能力
- 将本地答案数据集转为向量,存储到向量数据库。
- 用户输入查询问题时,把问题转为向量,从向量数据库中查询相近的答案 topK。
- 在没有 GPT 的情况下,直接返回相关答案即可完成问答查询。
- 引入 GPT 后,可以优化回答内容的整体结构;在单纯搜索场景下优化意义不大,但在客服等聊天场景中引用相关领域内容回复时,会显得不那么突兀。
使用方式
仓库中包含 code 目录,存放本次 MSD 示例的相关示例代码;docs 目录主要是作者在该方向上的一些思考和总结。资料未提供具体的安装命令、依赖配置或运行步骤,暂未提供。
适用场景
- 本地知识库问答。
- 客服等聊天场景中引用相关领域内容进行回复。
- 垂直领域知识库的可行性探索,例如作者演示的 MSD 案例。
限制与注意事项
- 请参考 OpenAI 的使用政策:https://openai.com/policies/usage-policies
- 直接将问题和答案做匹配时,可能因为问题的模糊性导致匹配不相关的答案。
- 在已有大量问答映射数据的情况下,可以先搜索问题集,再基于已有映射返回当前问题匹配的问题集的答案,以提升一定的问题准确性。
- 答案中有大量非答案内容时,可以通过抽取答案主题然后组合生成向量数据,在一定程度上提升相似度;主题算法有 LDA、LSA 等。
- OpenAI 的 Embedding 模型数据更多基于普遍性数据训练,如果问答领域过于专业,可能出现查询数据不准确的情况。解决方案是自训练 Embedding 模型。作者推荐项目 text2vec,并提到 shibing624 已给出基于 CoSENT + MacBERT + STS-B 的模型 shibing624/text2vec-base-chinese。作者也训练了基于 CoSENT + LERT + STS-B 的两个模型:隐层大小 1024 的 text2vec-large-chinese,以及 768 的 text2vec-base-chinese。为做 Demo,作者还基于 cMedQQ 数据集训练了两个医疗问答相关模型:text2vec-cmedqq-lert-large 和 text2vec-cmedqq-lert-base。
- 作者测试发现,使用问答数据集对 GPT 模型进行 Fine-tune 后,对该类问题的准确性大幅提高;可以理解为 GPT 通过大量专业领域数据训练后,提问时更像在与该领域专家对话,配合调小接口中的 temperature 参数,可以得到更确定的结果。
- 但 Fine-tune 训练和使用成本仍然太高,且每天都会有新数据,不可能高频进行 Fine-tune。作者的想法是每隔一个长周期对数据进行 Fine-tune,然后配合外置向量数据库的相似查询来补足 Fine-tune 模型本身的数据准确性问题。
其他
仓库页面包含 Buy me a coffee 链接。资料未提供收费、价格、平台支持范围或具体效果数据,暂未提供。