AI 知识库

一、知识库管理

  1. 新增知识库:

    1. 文件类型:支持 docx、pdf 和 txt 格式文本,语言为中文、英文或中英文混排;

    2. 文档切片:针对业务场景,结合文案的语义特点,切片长度在 512 - 1024 之间为宜;

    3. 构建向量:向量的构建过程是指将文本拆分为单词或其他基本单元,提取其重要特征,采用特定的算法将这些特征转化为数值向量,构建向量通过 fastembed 组件实现,采用 BAAI/bge-small-zh-v1.5 模型,支持中英文两种语言。

    4. 索引存储:将文档 ID、文档地址、文档片段及片段向量保存到向量数据库中;

  2. 删除知识库:

    1. 根据文档 ID 删除向量数据库中该文档的所有记录,记录包括该文档的地址、某个片段和对应片段的向量;

    2. 知识库中文档记录的删除采用真实删除,即文档内容的更新执行的是删除加新增的双重操作,这是因为文档修改会变更文档分片和向量数值。

二、知识库应用

  1. 接收用户输入的文本内容;

  2. 对用户输入的文本信息进行预处理,处理过程可能包括敏感信息的提示与过滤,文本信息的纠错和编排;

  3. 对预处理后的用户输入信息进行向量构建,构建过程必须与新增知识库时使用的组件与模型保持完全一致;

  4. 采用构建的文本向量到知识库索引向量库中进行检索查询,检索返回条数和向量相似性阈值可以由用户指定,建议默认条数为 10 条,相似度阈值区间在 0.6 - 0.9 之间;

  5. 系统根据检索结果中的文档片段,组装成 prompt,后面提交给大语言模型服务,要求其根据提示中的文档片段,结合实际情况及语言逻辑,生成全新的、符合用户要求的文档。

  6. 最后由语言模型根据 prompt 、历史记录、会话背景及上下文信息来进行重新构建和渲染,生成目标内容;

三、向量数据库

        各种类型的数据(文本、图像、声音和视频)都可以转换为向量,从而为复杂的数据结构提供了一种强大的数据表示能力,使其在机器学习和人工智能领域有着广泛的适用性和重要性。目前支持向量操作的解决方案有很多,本方案采用 PostgreSQL 数据库加插件的方式来支持向量操作。

  • 安装指令:sudo apt-get install postgresql postgresql-contrib postgresql-server-dev-14

  • 启动及查看

    # 查看
    sudo systemctl status postgresql.service
    # 停止
    sudo systemctl stop postgresql.service
    # 启动
    sudo systemctl start postgresql.service
    # 重启
    sudo systemctl restart postgresql.service
  • 安装插件

    # 临时安装路径
    cd /tmp
    # 下载插件源码
    git clone --branch v0.5.1 https://github.com/pgvector/pgvector.git
    # 进入安装路径
    cd pgvector
    # 编译插件源码
    make
    # 安装部署组件
    sudo make install
    # 重启数据服务
    sudo systemctl restart postgresql.service
  • 建表指令

    # create table tbl_aigc_knowledge
    # (
    #     id                bigserial,
    #     doc_id            bigint,
    #     doc_url           text,
    #     doc_chunk         text,
    #     doc_embedding     vector(1024)
    # )
    #     with (fillfactor = 100);
    #
    # comment on column tbl_aigc_knowledge.doc_id is '文档 ID';
    # comment on column tbl_aigc_knowledge.doc_url is '文档地址';
    # comment on column tbl_aigc_knowledge.doc_chunk is '分片文本';
    # comment on column tbl_aigc_knowledge.doc_embedding is '分片向量';

四、向量模型

序号模型维度描述
1BAAI/bge-small-en-v1.5384Fast and Default English model
2BAAI/bge-small-zh-v1.5512Fast and recommended Chinese model
3BAAI/bge-base-en768Base English model
4BAAI/bge-large-en-v1.51024Large English model, v1.5

五、后端接口

  1. 知识库添加接口

    curl --location --request POST 'http://127.0.0.1/abc/create' \
    --header 'Authorization: eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6Ijk2Yzg4OWY2LTMzMzAtNDk4ZC1hMTcyLWE5M2Y1MmI0ZDIyMyIsInVzZXJuYW1lIjoiYWRtaW4ifQ.LBLZkol64er0YkfC70Uwc2r9AC9Tm6vkjpw1ov5nauM7_KJ89GPioFo4P6uJx3mKme8lU78h_5q19YUcxrBSjg' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "doc_id": 1111,
        "doc_url": "http://127.0.0.1/test.docx"
    }'
  2. 知识库删除接口

    curl --location --request POST 'http://127.0.0.1/abc/delete' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "doc_id": 1111
    }'
  3. 知识库查询接口

    curl --location --request POST 'http://127.0.0.1/abc/search' \
    --header 'Authorization: eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjozLCJ1c2VyX2tleSI6IjQ1YjMxZDk4LTU1ZDMtNDFkYi05MDgxLWEyN2Q2NzJhNDhlMyIsInVzZXJuYW1lIjoiZ29uZ2xpYmluMSJ9.Ng40cLaboWTJmz_Lq4JwXpk86aRyhDmamqhK_poe4OUZ3-L0xCilevcuZwavQuopAAj2xZjGImjRhKsQu5EvZg' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "content": "程序",
        "limit": 10,
        "threshold": 0.78
    }'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厉力文武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值