centos安装qdrant结合php及千问实现RAG知识库问答

centos安装qdrant结合php及千问实现RAG知识问答

今天我们使用php实现一个rag增强检索生成的知识库问答。


一、安装qdrant

首先安装qdrant向量数据库,下载地址:https://github.com/qdrant/qdrant/releases/

centos请下载qdrant-x86_64-unknown-linux-musl.tar.gz,qdrant支持mac、linux、windows,自己根据环境下载


下载后依次执行下面的命令:

tar -zxvf qdrant-x86_64-unknown-linux-musl.tar.gz
chmod +x ./qdrant
./qdrant


二、注册阿里的通义千问api

key申请地址:https://dashscope.console.aliyun.com/apiKey

从千问获取知识库的embedding向量。每行文本最大token是2048,向量维度是1536,一次传给api的行数最多25行,例如texts中的每一个元素就是一行,最大token是2048,token不是字符长度,而是一个词的长度,比如你好这个词语就是一个token,英文home就是一个token,符号也是一个token,可以用jieba对输入的词进行分词获取token长度,每次调用api接口后也会返回使用的tokens数据。

curl --location 'https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding' \
--header 'Authorization: Bearer <your-dashscope-api-key>' \
--header 'Content-Type: application/json' \--data '{
    "model": "text-embedding-v1",
    "input": {
        "texts": [
        "风急天高猿啸哀",
        "渚清沙白鸟飞回", 
        "无边落木萧萧下", 
        "不尽长江滚滚来"
        ]
    },
    "parameters": {
    		"text_type": "query"
    }
}'

返回

{
    "output":{
        "embeddings": [
          {
             "text_index": 0,
             "embedding": [-0.006929283495992422,-0.005336422007530928, ...]
          }, 
          {
             "text_index": 1,
             "embedding": [-0.006929283495992422,-0.005336422007530928, ...]
          },
          {
             "text_index": 2,
             "embedding": [-0.006929283495992422,-0.005336422007530928, ...]
          },
          {
             "text_index": 3,
             "embedding": [-0.006929283495992422,-0.005336422007530928, ...]
          }
        ]
    },
    "usage":{
        "total_tokens":12
    },
    "request_id":"d89c06fb-46a1-47b6-acb9-bfb17f814969"
}

注意text_type取值:query或document,默认值为document。

说明:文本转换为向量后可以应用于检索、聚类、分类等下游任务,对于检索这类非对称任务,为了达到更好的检索效果,建议区分查询文本(query)和底库文本(document)类型,聚类、分类等对称任务可以不用特殊指定,采用系统默认值"document"即可。

三、编写代码

先将知识文本通过阿里千问的api生成向量数据插入到qdrant中,然后我查询的时候先将查询文本向量化,然后再到qdrant中获取文本相似度高的文本:




完整的代码如下:

{{collectdata}}

网友评论0