欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > DashText-快速开始

DashText-快速开始

2024/10/23 23:26:50 来源:https://blog.csdn.net/qq_41362382/article/details/139763367  浏览:    关键词:DashText-快速开始

DashText,是向量检索服务DashVector推荐使用的稀疏向量编码器(Sparse Vector Encoder),DashText可通过BM25算法将原始文本转换为稀疏向量(Sparse Vector)表达,通过DashText可大幅度简化使用DashVector关键词感知检索能力。

说明

1. 需要使用您的api-key替换示例中的YOUR_API_KEY、您的Cluster Endpoint替换示例中的YOUR_CLUSTER_ENDPOINT,代码才能正常运行。

2. 本示例仅对Sparse Vector进行功能演示,请根据实际情况设置您的向量维度(可参考文章什么是向量)。简化起见,本文示例代码中将向量(Dense Vector)维度设置为4。

Step1. 创建支持Sparse Vector的Collection

Python示例:

import dashvectorclient = dashvector.Client(api_key='YOUR_API_KEY', endpoint='YOUR_CLUSTER_ENDPOINT')
assert clientret = client.create('hybrid_collection', dimension=4, metric='dotproduct')
assert retcollection = client.get('hybrid_collection')
assert collection

重要

仅内积度量(metric='dotproduct')支持Sparse Vector功能

Step2. 创建SparseVectorEncoder

使用内置Encoder

Python示例:

from dashtext import SparseVectorEncoderencoder = SparseVectorEncoder.default()

说明

内置Encoder使用中文Wiki语料进行训练,采用Jieba进行中文分词

基于自有语料创建Encoder

Python示例:

from dashtext import SparseVectorEncoderencoder = SparseVectorEncoder()# (全部)自有语料
corpus = ["向量检索服务DashVector基于阿里云自研的高效向量引擎Proxima内核,提供具备水平拓展能力的云原生、全托管的向量检索服务","DashVector将其强大的向量管理、向量查询等多样化能力,通过简洁易用的SDK/API接口透出,方便被上层AI应用迅速集成","从而为包括大模型生态、多模态AI搜索、分子结构分析在内的多种应用场景,提供所需的高效向量检索能力","简单灵活、开箱即用的SDK,使用极简代码即可实现向量管理","自研向量相似性比对算法,快速高效稳定服务","Schema-free设计,通过Schema实现任意条件下的组合过滤查询"
]# 基于自有语料训练Encoder
encoder.train(corpus)

说明

1.内置Encoder可直接使用,无需使用原始语料进行训练,使用起来更加方便,同时泛化能力较强。但面对原始语料中专业术语较多等场景,准确性偏弱

2.基于自有语料创建Encoder,需要预先根据(全部)原始语料进行训练,准确性较高,自有语料创建Encoder具体使用可参考进阶使用

3.用户需根据自身业务场景和需求来选择Encoder,对于特定领域(大量专属词汇)的场景推荐基于自有语料创建Encoder

Step3. 插入带有Sparse Vector的Doc

Python示例:

from dashvector import Docdocument = "向量检索服务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 = "什么是向量检索服务?"
sparse_vector = encoder.encode_queries(query)print(sparse_vector)
# 基于内置Encoder的output: 
# {1169440797: 0.2947158712590364, 2045788977: 0.7052841287409635}docs = collection.query(vector=[0.1, 0.1, 0.1, 0.1],sparse_vector=sparse_vector
)

Step5. 基于权重的关键词+语义检索

Python示例:

from dashtext import combine_dense_and_sparsequery = "什么是向量检索服务?"
sparse_vector = encoder.encode_queries(query)# 权重因子
alpha = 0.7
dense_vector = [0.1, 0.1, 0.1, 0.1]
scaled_dense_vector, scaled_sparse_vector = combine_dense_and_sparse(dense_vector, sparse_vector, alpha)docs = collection.query(vector=scaled_dense_vector,sparse_vector=scaled_sparse_vector
)

说明

参数alpha是控制稠密向量距离和稀疏向量距离加权的权重因子,alpha=0.0表示只采用稀疏向量进行距离度量,alpha=1.0表示只采用稠密向量进行距离度量。

API参考

更多DashText API详情可参考:

  • Python SDK:dashtext · PyPI

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com