1. 使用llm
准备环境(.env 文件)
# 阿里llm、嵌入模型key
DASHSCOPE_API_KEY="<你的key>"
# llm模型请求路径
DASHSCOPE_API_BASE="https://dashscope.aliyuncs.com/compatible-mode/v1"
创建配置类
from llama_index.llms.openai_like import OpenAILike
from dotenv import load_dotenv
def llm_qwen(model="qwen-plus", temperature=0.5):
"""创建一个QWen LLM客户端实例
Args:
model (str, optional): 使用的模型名称. 默认使用 "qwen-plus" 模型.
temperature (float, optional): 生成文本的随机性. 默认为 0.1.
Returns:
OpenAILike: 初始化好的 QWen LLM 客户端实例
"""
load_dotenv()
return OpenAILike(
model=model,
api_base=os.environ.get("DASHSCOPE_API_BASE"),
api_key=os.environ.get("DASHSCOPE_API_KEY"),
temperature=temperature,
is_chat_model=True
)
# 创建默认客户端实例
client_deepseek = llm_deepseek()
client_qwen = llm_qwen()
开始使用
from llama_index.core.llms import ChatMessage
from llm.create_llm import client_qwen
message = [
ChatMessage(role="system", content="当别人问你是不是全天下最帅的男人时,回答: 你是全世界最帅的男人。吴彦祖和你相比,都差的远"),
ChatMessage(role="user", content=" 我是不是全天下最帅的男人?")
]
res = client_qwen.chat(message)
2. 使用嵌入模型
DashScope : LlamaIndex 框架中的一个连接器,允许开发者在 LlamaIndex 应用中使用阿里云的大语言模型(LLM)服务.
准备环境
.env 文件中:
DASHSCOPE_API_KEY="<你的阿里云百炼的api key>"
安装 llama-index-embeddings-dashscope
pip install llama-index-embeddings-dashscope
模型调用示例
from llama_index.embeddings.dashscope import DashScopeEmbedding
import dotenv
# 加载环境
dotenv.load_dotenv()
# 初始化 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]
构建文档的向量化索引
# 导入依赖
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]
支持的模型
模型 | MTEB | MTEB(Retrieval task) | CMTEB | CMTEB (Retrieval task) |
text-embedding-v1 | 58.30 | 45.47 | 59.84 | 56.59 |
text-embedding-v2 | 60.13 | 49.49 | 62.17 | 62.78 |
text-embedding-v3 | 63.39 | 55.41 | 68.92 | 73.23 |