私有知识库搭建

简介: 私有知识库搭建,纯docker文件

简单记录一下Fast GPT知识库搭建文件

搭建文件有三个: fastgpt俩文件,one-api文件,chatglm,以及 m3e或者其他向量处理模型


首先第一个 fastgpt的文件,这里我比官网加入了m3e向量处理模型

# 非 host 版本, 不使用本机代理
# (不懂 Docker 的,只需要关心 OPENAI_BASE_URL 和 CHAT_API_KEY 即可!)
version: '3.3'
services:
  m3e:
    # image: stawky/m3e-large-api:latest
    image: registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
    container_name: m3e_vector
    restart: always
    ports:
      - 16008:6008
    networks:
      - fastgpt
  pg:
    image: ankane/pgvector:v0.5.0 # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云
    container_name: pg
    restart: always
    ports: # 生产环境建议不要暴露
      - 5433:5432
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=postgres
    volumes:
      - ./pg/data:/var/lib/postgresql/data
  mongo:
    image: mongo:5.0.18
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
    container_name: mongo
    restart: always
    ports: # 生产环境建议不要暴露
      - 27018:27017
    networks:
      - fastgpt
    environment:
      # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
      - MONGO_INITDB_ROOT_USERNAME=username
      - MONGO_INITDB_ROOT_PASSWORD=password
    volumes:
      - ./mongo/data:/data/db
  fastgpt:
    container_name: fastgpt
    image: ghcr.io/labring/fastgpt:latest # git
    # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
    ports:
      - 13000:3000
    networks:
      - fastgpt
    depends_on:
      - mongo
      - pg
    restart: always
    environment:
      # root 密码,用户名为: root
      - DEFAULT_ROOT_PSW=1234
      # 中转地址,如果是用官方号,不需要管。务必加 /v1
      - OPENAI_BASE_URL=http://host.docker.internal:13127/v1
      - CHAT_API_KEY=sk-************************************
      - DB_MAX_LINK=5 # database max link
      - TOKEN_KEY=any
      - ROOT_KEY=root_key
      - FILE_TOKEN_KEY=filetoken
      # mongo 配置,不需要改. 如果连不上,可能需要去掉 ?authSource=admin
      - MONGODB_URI=mongodb://username:password@host.docker.internal:27018/fastgpt?authSource=admin
      # pg配置. 不需要改
      - PG_URL=postgresql://username:password@host.docker.internal:5433/postgres
    volumes:
      - ./config.json:/app/data/config.json
networks:
  fastgpt:

FastGPT config.json

{
  "systemEnv": {
    "openapiPrefix": "fastgpt",
    "vectorMaxProcess": 15,
    "qaMaxProcess": 15,
    "pgHNSWEfSearch": 100
  },
  "chatModels": [
    {
      "model": "ChatGLM3",
      "name": "ChatGLM3",
      "price": 0,
      "maxToken": 4000,
      "quoteMaxToken": 2000,
      "maxTemperature": 1.2,
      "censor": false,
      "defaultSystemChatPrompt": ""
    },
    {
      "model": "gpt-3.5-turbo",
      "name": "GPT35",
      "inputPrice": 0,
      "outputPrice": 0,
      "maxContext": 4000,
      "maxResponse": 4000,
      "quoteMaxToken": 2000,
      "maxTemperature": 1.2,
      "censor": false,
      "vision": false,
      "defaultSystemChatPrompt": ""
    },
    {
      "model": "gpt-3.5-turbo-16k",
      "name": "GPT35-16k",
      "maxContext": 16000,
      "maxResponse": 16000,
      "inputPrice": 0,
      "outputPrice": 0,
      "quoteMaxToken": 8000,
      "maxTemperature": 1.2,
      "censor": false,
      "vision": false,
      "defaultSystemChatPrompt": ""
    },
    {
      "model": "gpt-4",
      "name": "GPT4-8k",
      "maxContext": 8000,
      "maxResponse": 8000,
      "inputPrice": 0,
      "outputPrice": 0,
      "quoteMaxToken": 4000,
      "maxTemperature": 1.2,
      "censor": false,
      "vision": false,
      "defaultSystemChatPrompt": ""
    },
    {
      "model": "gpt-4-vision-preview",
      "name": "GPT4-Vision",
      "maxContext": 128000,
      "maxResponse": 4000,
      "inputPrice": 0,
      "outputPrice": 0,
      "quoteMaxToken": 100000,
      "maxTemperature": 1.2,
      "censor": false,
      "vision": true,
      "defaultSystemChatPrompt": ""
    }
  ],
  "qaModels": [
    {
      "model": "ChatGLM3",
      "name": "ChatGLM3",
      "maxToken": 8000,
      "price": 0
    },
    {
      "model": "gpt-3.5-turbo-16k",
      "name": "GPT35-16k",
      "maxContext": 16000,
      "maxResponse": 16000,
      "inputPrice": 0,
      "outputPrice": 0
    }
  ],
  "cqModels": [
    {
      "model": "ChatGLM3",
      "name": "ChatGLM3",
      "maxToken": 8000,
      "price": 0,
      "functionCall": true,
      "functionPrompt": ""
    },
    {
      "model": "gpt-3.5-turbo",
      "name": "GPT35",
      "maxContext": 4000,
      "maxResponse": 4000,
      "inputPrice": 0,
      "outputPrice": 0,
      "toolChoice": true,
      "functionPrompt": ""
    },
    {
      "model": "gpt-4",
      "name": "GPT4-8k",
      "maxContext": 8000,
      "maxResponse": 8000,
      "inputPrice": 0,
      "outputPrice": 0,
      "toolChoice": true,
      "functionPrompt": ""
    }
  ],
  "extractModels": [
    {
      "model": "ChatGLM3",
      "name": "ChatGLM3",
      "maxToken": 8000,
      "price": 0,
      "functionCall": true,
      "functionPrompt": ""
    },
    {
      "model": "gpt-3.5-turbo-1106",
      "name": "GPT35-1106",
      "maxContext": 16000,
      "maxResponse": 4000,
      "inputPrice": 0,
      "outputPrice": 0,
      "toolChoice": true,
      "functionPrompt": ""
    }
  ],
  "qgModels": [
    {
      "model": "ChatGLM3",
      "name": "ChatGLM3",
      "maxToken": 4000,
      "price": 0
    },
    {
      "model": "gpt-3.5-turbo-1106",
      "name": "GPT35-1106",
      "maxContext": 1600,
      "maxResponse": 4000,
      "inputPrice": 0,
      "outputPrice": 0
    }
  ],
  "vectorModels": [
    {
      "model": "text-embedding-ada-002",
      "name": "Embedding-2",
      "price": 0.2,
      "defaultToken": 700,
      "maxToken": 3000
    },
    {
      "model": "m3e",
      "name": "M3E(测试使用)",
      "price": 0.1,
      "defaultToken": 500,
      "maxToken": 1800
    }
  ],
  "reRankModels": [],
  "audioSpeechModels": [
    {
      "model": "tts-1",
      "name": "OpenAI TTS1",
      "inputPrice": 0,
      "outputPrice": 0,
      "voices": [
        { "label": "Alloy", "value": "alloy", "bufferId": "openai-Alloy" },
        { "label": "Echo", "value": "echo", "bufferId": "openai-Echo" },
        { "label": "Fable", "value": "fable", "bufferId": "openai-Fable" },
        { "label": "Onyx", "value": "onyx", "bufferId": "openai-Onyx" },
        { "label": "Nova", "value": "nova", "bufferId": "openai-Nova" },
        { "label": "Shimmer", "value": "shimmer", "bufferId": "openai-Shimmer" }
      ]
    }
  ],
  "whisperModel": {
    "model": "whisper-1",
    "name": "Whisper1",
    "inputPrice": 0,
    "outputPrice": 0
  }
}



第二个 openapi文件 这里和官方一样, 至于chatglm这里采用本地部署并未使用docker
version: '3.4'

services:
  one-api:
    image: justsong/one-api:latest
    container_name: one-api
    restart: always
    command: --log-dir /app/logs
    ports:
      - 13127:3000
    volumes:
      - ./data/oneapi:/data
      - ./logs:/app/logs
    environment:
      - SQL_DSN=oneapi:123456@tcp(db:3306)/one-api  # 修改此行,或注释掉以使用 SQLite 作为数据库
      - REDIS_CONN_STRING=redis://redis
      - SESSION_SECRET=random_string  # 修改为随机字符串
      - TZ=Asia/Shanghai
#      - NODE_TYPE=slave  # 多机部署时从节点取消注释该行
#      - SYNC_FREQUENCY=60  # 需要定期从数据库加载数据时取消注释该行
#      - FRONTEND_BASE_URL=https://openai.justsong.cn  # 多机部署时从节点取消注释该行
    depends_on:
      - redis
      - db
    healthcheck:
      test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]
      interval: 30s
      timeout: 10s
      retries: 3

  redis:
    image: redis:latest
    container_name: redis
    restart: always

  db:
    image: mysql:8.2.0
    restart: always
    container_name: mysql
    volumes:
      - ./data/mysql:/var/lib/mysql  # 挂载目录,持久化存储
    ports:
      - '3306:3306'
    environment:
      TZ: Asia/Shanghai   # 设置时区
      MYSQL_ROOT_PASSWORD: 'OneAPI@justsong' # 设置 root 用户的密码
      MYSQL_USER: oneapi   # 创建专用用户
      MYSQL_PASSWORD: '123456'    # 设置专用用户密码
      MYSQL_DATABASE: one-api   # 自动创建数据库
第三个chatglm 部署文档

这里是官方docker可以尝试下,也可以使用linux部署,这个看官方readme就好了

version: "3.6"

services:
        glm3_api:
                image: python:3.10.13-slim
                restart: unless-stopped
                working_dir: /glm3
                container_name: glm3_api
                env_file: ./.env
                networks:
                        - v_glm3
                deploy:
                        resources:
                                reservations:
                                        devices:
                                                - driver: nvidia
                                                  count: 1
                                                  capabilities: [gpu]
                environment:
                        - MODEL_PATH=/models/chatglm3-6b
                        - EMBEDDING_PATH=/models/bge-large-zh-v1.5
                        - TZ=Asia/Shanghai
                        - PYTHONDONTWRITEBYTECODE=1
                        - PYTHONUNBUFFERED=1
                        - DOCKER=True
                ports:
                        - 8100:8000
                volumes:
                        - ./:/glm3
                        - ${MODELSCOPE_CACHE}:/ZhipuAI/chatglm3-6b
                        - ${MODELSCOPE_CACHE}:/hub/bge-large-zh-v1.5
                command:
                        - sh
                        - -c
                        - |
                          sed -i s/deb.debian.org/mirrors.tencentyun.com/g /etc/apt/sources.list
                          sed -i s/security.debian.org/mirrors.tencentyun.com/g /etc/apt/sources.list
                          apt-get update
                          python -m pip install -i  https://mirror.sjtu.edu.cn/pypi/web/simple --upgrade pip
                          pip install -r requirements.txt -i  https://pypi.tuna.tsinghua.edu.cn/simple
                          python openai_api.py
networks:
        v_glm3:
                driver: bridge


总结

总结来说呢,就是需要再Fast GPT官方给的部署基础上 多加一个m3e向量处理模型,官方这里通过调用one-api转接道openAI那里处理了,如果是私有部署的话,一些敏感信息是不可能送到openai那里去处理向量的.

还会有更好的向量模型这里Fast GPT推荐m3e就用的这个,可以深入调研下,以便更好匹配知识库识别准确度.





目录
相关文章
|
JavaScript
VUE element-ui之el-popover弹出框在局部全屏下不显示问题及弹框、小箭头背景修改
VUE element-ui之el-popover弹出框在局部全屏下不显示问题及弹框、小箭头背景修改
3513 0
VUE element-ui之el-popover弹出框在局部全屏下不显示问题及弹框、小箭头背景修改
|
11月前
|
人工智能 安全 搜索推荐
阿里云AI Stack,加速大模型创新应用
阿里云AI Stack作为面向企业级客户的轻量化、极致性价比、软硬一体AI解决方案,顺利通过了中国信通院《AI大模型一体机技术能力要求》测评。
2068 1
|
人工智能 Linux Docker
一文详解几种常见本地大模型个人知识库工具部署、微调及对比选型(1)
近年来,大模型在AI领域崭露头角,成为技术创新的重要驱动力。从AlphaGo的胜利到GPT系列的推出,大模型展现出了强大的语言生成、理解和多任务处理能力,预示着智能化转型的新阶段。然而,要将大模型的潜力转化为实际生产力,需要克服理论到实践的鸿沟,实现从实验室到现实世界的落地应用。阿里云去年在云栖大会上发布了一系列基于通义大模型的创新应用,标志着大模型技术开始走向大规模商业化和产业化。这些应用展示了大模型在交通、电力、金融、政务、教育等多个行业的广阔应用前景,并揭示了构建具有行业特色的“行业大模型”这一趋势,大模型知识库概念随之诞生。
159190 30
|
11月前
|
数据采集 搜索推荐 API
Python 原生爬虫教程:京东商品列表页面数据API
京东商品列表API是电商大数据分析的重要工具,支持开发者、商家和研究人员获取京东平台商品数据。通过关键词搜索、分类筛选、价格区间等条件,可返回多维度商品信息(如名称、价格、销量等),适用于市场调研与推荐系统开发。本文介绍其功能并提供Python请求示例。接口采用HTTP GET/POST方式,支持分页、排序等功能,满足多样化数据需求。
|
关系型数据库 OLAP API
非“典型”向量数据库AnalyticDB PostgreSQL及RAG服务实践
本文介绍了非“典型”向量数据库AnalyticDB PostgreSQL及其RAG(检索增强生成)服务的实践应用。 AnalyticDB PostgreSQL不仅具备强大的数据分析能力,还支持向量查询、全文检索和结构化查询的融合,帮助企业高效构建和管理知识库。
860 19
|
存储 自然语言处理 NoSQL
Vector | Graph:蚂蚁首个开源Graph RAG框架设计解读
本文作者设计了一个通用的开源RAG框架,以兼容未来多样化的基础研究建设和工程化应用诉求。
1458 9
|
存储 人工智能 自然语言处理
|
机器人
Telegram统计机器人源码/TG记账群发机器源码人/TG自动记账全开源版本
Telegram统计机器人源码/TG记账群发机器源码人/TG自动记账全开源版本
1187 0
|
Java Linux 网络安全
技术心得记录:将centos7打造成桌面系统
技术心得记录:将centos7打造成桌面系统
1145 0

热门文章

最新文章