青训营X豆包MarsCode AI训练营第三课 | 豆包MarsCode AI 刷题

106 阅读3分钟

项目概述

项目名称

“易速鲜花” 内部员工知识库问答系统。

项目背景

“易速鲜花” 作为大型在线鲜花销售平台,虽有员工 SOP 手册等信息,但存在分散难查询、文档冗长找内容不便、文档更新不及时等问题,所以要开发基于内部知识手册的 “Doc-QA” 系统。

整体框架三部分:

数据源(Data Sources)

涵盖非结构化数据(如 PDF 等)、结构化数据(如 SQL 等)及代码等,本示例聚焦非结构化数据处理。

大模型应用(Application,即 LLM App)

以大模型为逻辑引擎生成所需回答。

用例(Use-Cases)

大模型生成的回答可构建 QA / 聊天机器人等系统。

核心实现机制及具体流程:

核心机制:数据处理管道(Pipeline),LangChain 在各步骤提供工具助力文档问答功能实现。

具体 5 步流程:

Loading

用文档加载器将 Documents 加载为 LangChain 能读取的形式。

Splitting

文本分割器把 Documents 切分为指定大小 “文档块”。

Storage

将 “文档块” 以 “嵌入” 形式存储到向量数据库中。

Retrieval

应用程序从存储中检索分割后的文档(通过比较余弦相似度等找相似嵌入片)。

Output

把问题和相似嵌入片传递给语言模型生成答案。

其他关键环节

数据的准备和载入

用 LangChain 中的 document_loaders 加载各种格式文本文件(如 pdf、word、txt 等),存储在列表中,导入 OpenAI 的 API Key,利用其 Embedding 模型和 GPT 模型,也可替换为其他开源模型,运行要注意工具包安装。

文本的分割

使用 LangChain 中的 RecursiveCharacterTextSplitter 将加载文本分割成约 200 字符的文档块,为向量数据库存储做准备。

向量数据库存储

用 OpenAIEmbeddings 生成嵌入,Qdrant 向量数据库存储嵌入。

相关信息的获取

将问题转换为向量与向量数据库中的向量比较,常用欧氏距离和余弦相似度来度量,依具体场景选择。

生成回答并展示

创建 Flask 应用接收用户问题,用 RetrievalQA 链获取文档生成答案,通过 index.html 渲染呈现。

个人思考

这个 “易速鲜花” 内部员工知识库问答系统的开发框架是很全面且有条理的,从数据的处理到最终答案的呈现,每个环节都紧密相连、环环相扣。它充分利用了 LangChain 框架以及相关的工具和模型来解决企业内部知识管理和查询的痛点问题。在实际应用中,这种基于大语言模型和向量数据库等技术搭建的问答系统,不仅能提高员工获取知识的效率,还能保证知识的准确性和及时性。不过,在使用外部的如 OpenAI 相关模型时,要考虑数据安全以及成本等因素,同时不同的文本分割策略、向量数据库的选择等可能也需要根据企业自身数据量、使用场景等不断优化调整,才能让系统发挥出最大的效能,更好地服务于企业员工知识获取需求。

1732636505980.jpeg