免费体验阿里云高性能向量检索服务:https://www.aliyun.com/product/ai/dashvector
DashText,是向量检索服务DashVector推荐使用的稀疏向量编码器(Sparse Vector Encoder),DashText可通过BM25算法将原始文本转换为稀疏向量(Sparse Vector)表达,通过DashText可大幅度简化使用DashVector关键词感知检索能力。
安装DashText
说明
需要提前安装Python3.7及以上版本,请确保相应的Python版本
Shell:
pip install dashtext
快速开始
说明
1.需要使用您的api-key替换以下示例中的 YOUR_API_KEY,代码才能正常运行
2.本示例仅对Sparse Vector进行功能演示,简化起见,向量(Dense Vector)维度设置为4
Step1. 创建支持Sparse Vector的Collection
Python:
import dashvector client = dashvector.Client(api_key='YOUR_API_KEY') assert client ret = client.create('hybrid_collection', dimension=4, metric='dotproduct') assert ret collection = client.get('hybrid_collection') assert collection
重要
仅内积度量(metric='dotproduct'
)支持Sparse Vector功能
Step2. 创建SparseVectorEncoder
使用内置Encoder
Python:
from dashtext import SparseVectorEncoder encoder = SparseVectorEncoder.default()
说明
内置Encoder使用中文Wiki语料进行训练,采用Jieba进行中文分词
基于自有语料创建Encoder(推荐)
Python:
from dashtext import SparseVectorEncoder encoder = SparseVectorEncoder() # (全部)自有语料 corpus = [ "向量检索服务DashVector基于达摩院自研的高效向量引擎Proxima内核,提供具备水平拓展能力的云原生、全托管的向量检索服务", "DashVector将其强大的向量管理、向量查询等多样化能力,通过简洁易用的SDK/API接口透出,方便被上层AI应用迅速集成", "从而为包括大模型生态、多模态AI搜索、分子结构分析在内的多种应用场景,提供所需的高效向量检索能力", "简单灵活、开箱即用的SDK,使用极简代码即可实现向量管理", "自研向量相似性比对算法,快速高效稳定服务", "Schema-free设计,通过Schema实现任意条件下的组合过滤查询" ] # 基于自有语料训练Encoder encoder.train(corpus)
说明
1.内置Encoder可直接使用,无需使用原始语料进行训练,使用起来更加方便,同时泛化能力较强。但面对原始语料中专业术语较多等场景,准确性偏弱
2.基于自有语料创建Encoder,需要预先根据(全部)原始语料进行训练,准确性较高
3.用户需根据自身业务场景和需求来选择Encoder,通常而言,推荐基于自有语料创建Encoder
Step3. 插入带有Sparse Vector的Doc
Python:
from dashvector import Doc document = "向量检索服务DashVector基于达摩院自研的高效向量引擎Proxima内核,提供具备水平拓展能力的云原生、全托管的向量检索服务。" doc_sparse_vector = encoder.encode_documents(document) print(doc_sparse_vector) # 基于内置Encoder的output: # {380823393: 0.7262431704356519, 414191989: 0.7262431704356519, 565176162: 0.7262431704356519, 904594806: 0.7262431704356519, 1005505802: 0.7262431704356519, 1169440797: 0.8883757984694465, 1240922502: 0.7262431704356519, 1313971048: 0.7262431704356519, 1317077351: 0.7262431704356519, 1490140460: 0.7262431704356519, 1574737055: 0.7262431704356519, 1760434515: 0.7262431704356519, 2045788977: 0.8414146776926797, 2141666983: 0.7262431704356519, 2509543087: 0.7262431704356519, 3180265193: 0.7262431704356519, 3845702398: 0.7262431704356519, 4106887295: 0.7262431704356519} collection.insert(Doc( id='A', vector=[0.1, 0.2, 0.3, 0.4], sparse_vector=doc_sparse_vector ))
Step4. 关键词感知的向量检索
Python:
query = "什么是向量检索服务?" query_sparse_vector = encoder.encode_queries(query) print(query_sparse_vector) # 基于内置Encoder的output: # {1169440797: 0.2947158712590364, 2045788977: 0.7052841287409635} docs = collection.query( vector=[0.1, 0.1, 0.1, 0.1], sparse_vector=query_sparse_vector )
API参考
DashText API详情可参考:https://pypi.org/project/dashtext/
向量检索服务 DashVector 免费试用进行中,玩转大模型搜索,快来试试吧~
了解更多信息,请点击:https://www.aliyun.com/product/ai/dashvector