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中获取文本相似度高的文本:完整的代码如下:
网友评论0