本文档介绍使用DashScopeEmbedding服务来在LlamaIndex中构建向量索引服务的使用方法。
前提条件
您已开通百炼服务并获得API-KEY, 请参考获取API Key。
已导入 API-KEY,请参考配置API Key到环境变量。
安装 LlamaIndex 核心组件、DashScopeEmbedding 以及相关依赖。
pip install llama-index-core pip install llama-index-embeddings-dashscope pip install llama-index-readers-file pip install docx2txt
支持的模型
MTEB、CMTEB是 Embedding模型的通用评估指标,数值越大,模型效果越好。
修改全局设置(可选)
from llama_index.core import Settings
from llama_index.embeddings.dashscope import DashScopeEmbedding
# LlamaIndex默认使用的Embedding模型被替换为百炼的Embedding模型
Settings.embedder = DashScopeEmbedding(
model_name="text-embedding-v2"
)
模型调用示例
from llama_index.embeddings.dashscope import DashScopeEmbedding
# 初始化 Embedding 模型
embedder = DashScopeEmbedding(
model_name="text-embedding-v2"
)
text_to_embedding = ["风急天高猿啸哀", "渚清沙白鸟飞回", "无边落木萧萧下", "不尽长江滚滚来"]
# 调用 Embedding 模型
result_embeddings = embedder.get_text_embedding_batch(text_to_embedding)
# 显示 Embedding 后结果
for index, embedding in enumerate(result_embeddings):
print("Dimension of embeddings: %s" % len(embedding))
print(
"Input: %s, embedding is: %s"
% (text_to_embedding[index], embedding[:5])
)
示例代码输出
Dimension of embeddings: 1536
Input: 风急天高猿啸哀, embedding is: [-0.0016666285653348784, 0.008690492014557004, 0.02894828715284365, -0.01774133615134858, 0.03627544697161321]
Dimension of embeddings: 1536
Input: 渚清沙白鸟飞回, embedding is: [0.018255604113922633, 0.030631669725945727, 0.0031333343045102462, 0.014323813963475412, 0.009666154862176396]
Dimension of embeddings: 1536
Input: 无边落木萧萧下, embedding is: [-0.01270165436681136, 0.011355212676752505, -0.007090375205285297, 0.008317427977013809, 0.0341982923839579]
Dimension of embeddings: 1536
Input: 不尽长江滚滚来, embedding is: [0.003449439128962428, 0.02667092110022496, -0.0010223853088419568, -0.00971414215183749, 0.0035561228133633277]
构建文档的向量化索引
示例中使用的被解析文件:百炼系列产品介绍(虚构).zip
# 导入依赖
from llama_index.embeddings.dashscope import DashScopeEmbedding
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
# 读取被解析的文件目录下所有文件
documents = SimpleDirectoryReader("<请替换为需要解析的文件目录>").load_data()
print("已读取文件目录的文件")
# from_documents方法包含对文档进行切片与建立索引两个步骤
index = VectorStoreIndex.from_documents(
documents,
# 指定embedding 模型
embed_model=DashScopeEmbedding(
model_name="text-embedding-v2"
))
print("已使用DashScopeEmbedding模型构建了多个文档的向量化索引")
# 输出建立好的索引和压缩好的向量示例
print("输出向量化示例:")
for i, uuid in enumerate(index.vector_store.data.metadata_dict.keys()):
print("文件名:", end='')
print(index.vector_store.data.metadata_dict[uuid]['file_name'], end='')
print(",文件大小:", index.vector_store.data.metadata_dict[uuid]['file_size'], end='')
print(",文件类型:", index.vector_store.data.metadata_dict[uuid]['file_type'])
print("压缩后向量:", end='')
print(index.vector_store.data.embedding_dict[uuid][:3], '\n')
if i > 3:
break
示例代码输出
在构建向量化索引的过程中,原始文件会被拆分成多个部分,每个部分随后被转换成一个向量。
已读取文件目录的文件
已使用DashScopeEmbedding模型构建了多个文档的向量化索引
输出向量化示例:
文件名:百炼系列平板电脑产品介绍.pdf,文件大小: 144316,文件类型: application/pdf
压缩后向量:[0.040188307063141346, -0.00039877765589124394, -0.035738459756745854]
文件名:百炼系列平板电脑产品介绍.pdf,文件大小: 144316,文件类型: application/pdf
压缩后向量:[0.04814293357335188, 0.004163492388781393, -0.038165800733263575]
文件名:百炼系列手机产品介绍.docx,文件大小: 14265,文件类型: application/vnd.openxmlformats-officedocument.wordprocessingml.document
压缩后向量:[0.019914771026010504, 0.0009497773001332384, -0.040679692362629784]
文件名:百炼系列手机产品介绍.docx,文件大小: 14265,文件类型: application/vnd.openxmlformats-officedocument.wordprocessingml.document
压缩后向量:[0.02361539453526087, 0.00019768677449582677, -0.03274763169693275]
文件名:百炼系列智能音箱产品介绍.txt,文件大小: 2448,文件类型: text/plain
压缩后向量:[0.03064649761730314, -0.003089192569710745, -0.022280601331799776]
详细介绍与更多示例请前往 LlamaIndex 官方的Embedding Examples ,完整的 API Reference 请前往 LlamaIndex 官方的 DashScopeEmbedding API Reference。
文档内容是否对您有帮助?