1、之前视频讲解了 RAG 系统
相对比较复杂。
需要部署:Elasticsearch、FSCrawler、通义本地模型、ollama、Gradio 等。
全部前后端代码都需要自己实现,有一定的学习成本。 那有没有极简的方式构建呢?
之前一篇文章介绍了:《如何将 Coco AI 与自定义数据源集成 ?》 基于这个自定义数据源的思路,再进一步呢?
其实再进一步就是本文题目的内容了。
2、基于 Coco AI 的本地文档知识库+智能问答系统效果图
3、基于 Coco AI 的本地文档知识库+智能问答系统完整实现步骤
3.1 前置部署要求
Step1:安装 Easysearch
Step2: 安装 Cocoserver 服务器端
Step3:安装 Coco APP 客户端
Step4: 安装 ollama,且部署好本地相关模型
3.2 创建数据源
step1 :创建连接器。
Step2:基于连接器创建数据源。 上一步生成的连接器 id:d1mv3g26dku3m75bq3d0 可以用来创建数据源。
数据源唯一id:d1mv5ci6dku3m75bq3tg。
创建完数据源结构如下图所示:
特别说明:目前这里只支持 API 方式生成,0.6 版本不支持通过可视化界面配置生成。
3.3 确保CocoServer 服务端相关配置ok
3.3.1 模型提供部分本地模型设置没有问题。
基于 ollama 本地部署的模型进行添加。
3.3.2 AI 助手设置
应答模型选择好,如下图所示。
数据源头对应好,如下图所示。
3.4 切分大文档为小文档并写入 CocoServer
代码包括读取、分割文档内容并上传至 Elasticsearch 实例的实用工具。
将《一本书讲透 Elasticsearch 》400页+书稿导入效果如下所示。
详细代码参见:https://articles.zsxq.com/id_5ea0h58pdae2.html
序号 | 函数名称 | 参数 | 返回值 | 详细说明 |
---|---|---|---|---|
1 | read_docx | file_path (字符串): | 字符串列表 (段落) | 读取 |
2 | split_paragraphs | paragraphs (列表): 段落字符串列表 | 字符串列表 (分块) | 根据最大字符数限制将段落分割成块。 |
3 | split_by_bytes | paragraphs (列表): 段落字符串列表 | 字符串列表 (分块) | 根据最大字节数 (UTF-8 编码) 将段落分割成块。 |
4 | save_split_docx | paragraphs (列表): 段落字符串列表 | 无 | 从段落列表创建新的 |
5 | process_docx_file | file_path (字符串): 输入 | 字典列表 (文档) | 处理 |
6 | send_to_es | document (字典): 文档元数据和内容 | 元组: (整数: HTTP 状态码, 字符串: 响应文本) | 通过 POST 请求将文档发送到 Elasticsearch 实例。 |
7 | main | 无 | 无 | 主函数,遍历目录中的 |
4、小结
以一种极简的方式将本地文档切分导入Coco AI,形成了快速全文检索+智能问答。适用起来,功能基本满足预期要求。
期待大家使用后的交流。
开源、跨平台的统一搜索+AI 智能问答工具 Coco AI 0.5.0 发布