一、场景说明
- 使用阿里云 DashScope 文本嵌入模型
- 生成文本的向量表示(embedding)
- 支持:单句生成、文档批量生成
- 可直接用于:RAG 知识库、向量数据库、语义搜索、对话匹配
二、安装依赖
bash
pip install langchain langchain_community
三、完整可运行代码
python
import os
from langchain_community.embeddings import DashScopeEmbeddings
# 设置 dashscope api key(必须在创建对象之前)
os.environ["DASHSCOPE_API_KEY"] = "sk-你的API_KEY"
# 创建嵌入模型对象
# 不传 model 参数,默认使用 text-embedding-v1
embeddings = DashScopeEmbeddings()
# 1. embed_query 方法:用于单条文本/查询语句的嵌入
text = "我喜欢你"
vector = embeddings.embed_query(text)
print("单文本向量长度:", len(vector))
print("单文本向量前5个值:", vector[:5])
# 2. embed_documents 方法:用于文档列表批量嵌入
documents = ["我喜欢你", "你喜欢我"]
vectors = embeddings.embed_documents(documents)
print("\n批量文档向量数量:", len(vectors))
print("第1条向量前5个值:", vectors[0][:5])
print("第2条向量前5个值:", vectors[1][:5])
四、代码逐行讲解
1. 导入与配置 API Key
python
import os
from langchain_community.embeddings import DashScopeEmbeddings
os.environ["DASHSCOPE_API_KEY"] = "你的API_KEY"
- API Key 必须在创建对象前设置
- 从阿里云 DashScope 控制台获取
2. 初始化 Embedding 模型
python
embeddings = DashScopeEmbeddings()
默认模型:text-embedding-v1
你也可以手动指定模型:
python
embeddings = DashScopeEmbeddings(
model="text-embedding-v2"
)
3. 单文本向量化(embed_query)
python
text = "我喜欢你"
vector = embeddings.embed_query(text)
- 用于用户问题、单条句子
- 返回一个浮点数列表(向量)
4. 批量文档向量化(embed_documents)
python
documents = ["我喜欢你", "你喜欢我"]
vectors = embeddings.embed_documents(documents)
- 用于知识库文档、批量句子
- 返回多个向量的列表
五、运行结果示例
单文本向量长度: 1536
单文本向量前5个值: [-0.02143326, 0.03567211, 0.01232234, ...]
批量文档向量数量: 2
第1条向量前5个值: [-0.02143326, 0.03567211, ...]
第2条向量前5个值: [0.01567233, -0.02345612, ...]
六、常用方法总结
| 方法 | 用途 | 适用场景 |
|---|---|---|
embed_query(text) |
生成单文本向量 | 用户提问、检索词 |
embed_documents([text1, text2]) |
批量生成文档向量 | 知识库入库、批量处理 |
七、常见问题
- 报错:API Key 未设置
- 把
os.environ写在DashScopeEmbeddings()前面
- 把
- 报错:模型不存在
- 使用阿里云支持的模型:
text-embedding-v1、text-embedding-v2
- 使用阿里云支持的模型:
- 返回向量太长
- 这是正常的,embedding 一般是 768/1536 维
八、下一步能做什么?
学会 Embedding 后,你可以直接做:
- RAG 检索增强生成
- 对接 Chroma / FAISS / Milvus 向量数据库
- 文本相似度匹配、语义搜索
- 对话意图识别