本地知识库构建入门基础教程(非常详细),本地知识库构建入门到精通,收藏这一篇就够了!

本文将从零开始构建本地知识库,从而辅助 ChatGPT 基于知识库内容生成回答。

核心观点:

  • 向量:将人类的语言(文字、图片、视频等)转换为计算机可识别的语言(数组)。
  • 向量相似度:计算两个向量之间的相似度,表示两种语言的相似程度。
  • 语言大模型的特性:上下文理解、总结和推理。

这三个概念结合起来,就构成了 “向量搜索 + 大模型 = 知识库问答” 的公式。

一、FastGPT 部署

1.介绍
FastGPT 是目前 Prompt 串接做的最好的项目,知识库核心流程图如下:

在这里插入图片描述
从官方简介也可以看出很牛逼:

FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow
可视化进行工作流编排,从而实现复杂的问答场景!

2. 安装 Docker
话不多说直接开干,首选需要我们安装 Docker 应用,这里以 Windows 安装为例(其他系统可自行百度解决)。

登录 Docker 官网 双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。

安装完成后,Docker 会自动启动。通知栏上会出现个小鲸鱼的图标,这表示 Docker 正在运行。

我装的 docker-desktop 自带了 docker-compose,如果未安装可以去 Docker-Compose 官网 下载。

安装 Docker 还是比较简单,如果遇到大家可直接百度解决,网上这类文章很多。

3. 配置文件
先创建一个文件夹

# 创建文件夹
mkdir fastgpt

# 进入文件夹
cd fastgpt

创建 config.json,内容如下:

{
  "FeConfig": {
    "show_emptyChat": false,
    "show_contact": false,
    "show_git": false,
    "show_doc": true,
    "systemTitle": "个人知识库",
    "limit": {
      "exportLimitMinutes": 0
    },
    "scripts": []
  },
  "SystemParams": {
    "vectorMaxProcess": 15,
    "qaMaxProcess": 15,
    "pgIvfflatProbe": 20
  },
  "ChatModels": [
    {
      "model": "gpt-3.5-turbo",
      "name": "GPT35-4k",
      "contextMaxToken": 4000,
      "quoteMaxToken": 2000,
      "maxTemperature": 1.2,
      "price": 0,
      "defaultSystem": ""
    },
    {
      "model": "gpt-3.5-turbo-16k",
      "name": "GPT35-16k",
      "contextMaxToken": 16000,
      "quoteMaxToken": 8000,
      "maxTemperature": 1.2,
      "price": 0,
      "defaultSystem": ""
    },
    {
      "model": "gpt-4",
      "name": "GPT4-8k",
      "contextMaxToken": 8000,
      "quoteMaxToken": 4000,
      "maxTemperature": 1.2,
      "price": 0,
      "defaultSystem": ""
    }
  ],
  "VectorModels": [
    {
      "model": "text-embedding-ada-002",
      "name": "Embedding-2",
      "price": 0,
      "defaultToken": 500,
      "maxToken": 3000
    }
  ],
  "QAModel": {
    "model": "gpt-3.5-turbo-16k",
    "name": "GPT35-16k",
    "maxToken": 16000,
    "price": 0
  },
  "ExtractModel": {
    "model": "gpt-3.5-turbo-16k",
    "functionCall": true,
    "name": "GPT35-16k",
    "maxToken": 16000,
    "price": 0,
    "prompt": ""
  },
  "CQModel": {
    "model": "gpt-3.5-turbo-16k",
    "functionCall": true,
    "name": "GPT35-16k",
    "maxToken": 16000,
    "price": 0,
    "prompt": ""
  },
  "QGModel": {
    "model": "gpt-3.5-turbo",
    "name": "GPT35-4k",
    "maxToken": 4000,
    "price": 0,
    "prompt": "",
    "functionCall": false
  }
}

再创建 docker-compose.yml 文件,内容如下:

# 非 host 版本, 不使用本机代理
version: '3.3'

services:
  pg:
    # 使用阿里云的 pgvector 镜像
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.4.2
    container_name: pg
    restart: always
    # 生产环境建议不要暴露端口
    ports:
      - "5432:5432"
    networks:
      - fastgpt
    # 环境变量配置,首次运行生效,修改后需删除持久化数据再重启
    environment:
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=fastgpt
    # 卷挂载,包括初始化脚本和数据持久化
    volumes:
      - ./pg/init.sql:/docker-entrypoint-initdb.d/init.sh
      - ./pg/data:/var/lib/postgresql/data

  mongo:
    # 使用阿里云的 mongo 镜像
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18
    container_name: mongo
    restart: always
    # 生产环境建议不要暴露端口
    ports:
      - "27017:27017"
    networks:
      - fastgpt
    # 环境变量配置,首次运行生效,修改后需删除持久化数据再重启
    environment:
      - MONGO_INITDB_ROOT_USERNAME=username
      - MONGO_INITDB_ROOT_PASSWORD=password
    # 卷挂载,包括数据和日志
    volumes:
      - ./mongo/data:/data/db
      - ./mongo/logs:/var/log/mongodb

  fastgpt:
    container_name: fastgpt
    # 使用阿里云的 fastgpt 镜像
    image: registry.cn-hangzhou.aliyuncs.com/david_wang/fastgpt:latest
    ports:
      - "3000:3000"
    networks:
      - fastgpt
    # 确保在 mongo 和 pg 服务启动后再启动 fastgpt
    depends_on:
      - mongo
      - pg
    restart: always
    # 可配置的环境变量
    environment:
      - DEFAULT_ROOT_PSW=123456
      - OPENAI_BASE_URL=https://api.openai.com/v1
      - CHAT_API_KEY=sk-*****
      - DB_MAX_LINK=5
      - TOKEN_KEY=wenwenai
      - ROOT_KEY=wenwenai
      - FILE_TOKEN_KEY=filetoken
      - MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt?authSource=admin
      - PG_URL=postgresql://username:password@pg:5432/fastgpt
    # 配置文件的卷挂载
    volumes:
      - ./config.json:/app/data/config.json

# 定义使用的网络
networks:
  fastgpt:

注意修改 docker-compose.yml 中的 CHAT_API_KEY 为你的 OpenAI Key 即可。

4. 启动
执行命令启动本地知识库:

# 在 docker-compose.yml 同级目录下执行
docker-compose pull
docker-compose up -d

执行完成后就可以在浏览器上通过 http://localhost:3000/ 网址来访问个人知识库了。

二、构建知识库

基于上述操作我们已经成功访问到个人知识库页面,接下来带大家创建导入个人数据进行访问。

登录用户名为 root,密码为 docker-compose.yml 环境变量里设置的 DEFAULT_ROOT_PSW。

在这里插入图片描述
1. 创建知识库
新建一个知识库,这里将我的个人经历导入,所以取名为知白个人经历。

在这里插入图片描述
通过文件将个人经历导入到知识库中。

在这里插入图片描述
确认后就开始将当前数据转化为向量数据。

在这里插入图片描述

全文大约2300多字,大概3~5分钟就导入完成了。由于文本限制问题,按照固定字数拆分为了8个数据集。

在这里插入图片描述
至此,我们的个人知识库已经建好了。我们尝试进行问答,这里的 0.7881 就是向量相似度,相似度越高的越靠前。

在这里插入图片描述
2. 使用知识库
创建一个应用来使用知识库。

在这里插入图片描述
这里简单设置了一下开场白,选择并绑定对应知识库。

在这里插入图片描述
开始对话,效果展示如下:

在这里插入图片描述

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

### 使用Python构建本地知识库的方法 #### 构建框架的选择 为了高效地管理和利用本地存储的数据,可以选择使用Langchain这样的工具来辅助开发。通过Langchain提供的接口和功能模块,能简化数据加载、索引建立以及查询处理的过程[^3]。 #### 初始化环境设置 在开始之前,确保已经安装了必要的依赖包。可以通过pip命令安装langchain以及其他可能需要用到的第三方库: ```bash pip install langchain ``` #### 创建LocalDocQA类实例 下面展示了一段用于初始化`llm_model_ins`对象,并创建`LocalDocQA`实例的关键代码片段。这段程序还展示了如何配置初始参数并通过指定的知识库路径执行特定查询的操作[^2]: ```python from some_module import LocalDocQA, LLMModelClass # 假设这是两个自定义或导入的类 # 实例化模型对象 llm_model_ins = LLMModelClass() # 创建LocalDocQA实例并完成基本配置 doc_qa_system = LocalDocQA() doc_qa_system.init_cfg(llm_model=llm_model_ins) query_text = "你想询问的内容" knowledge_base_path = "/path/to/your/knowledge/base" # 获取基于文档的知识型回答 response_with_docs = doc_qa_system.get_knowledge_based_answer(query=query_text, knowledge_base_dir=knowledge_base_path) print(response_with_docs['result']) for source_doc in response_with_docs["source_documents"]: print(source_doc.metadata["source"]) ``` 此段脚本实现了从设定查询到输出结果的整体流程,其中包含了对所需资源文件位置的说明,使得整个过程更加直观易懂。 #### 数据管理与维护 如同图书馆管理员负责整理藏书一样,在构建本地知识库时也需要考虑如何有效地组织内部结构以便于后续访问。这通常涉及到分类体系的设计、元数据标注等工作,从而提高检索效率和支持更复杂的查询逻辑[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值