LlamaIndex 如何使用阿里大模型 API

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] 

支持的模型

模型MTEBMTEB(Retrieval task)CMTEBCMTEB (Retrieval task)
text-embedding-v158.3045.4759.8456.59
text-embedding-v260.1349.4962.1762.78
text-embedding-v363.3955.4168.9273.23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI Agent首席体验官

您的打赏是我继续创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值