## 引言
随着 AI 技术的快速发展,向量检索成为提升多模态 AI 应用效率的重要工具。DashVector 是由达摩院开发的高效向量引擎 Proxima 支持的全托管云原生向量检索服务,适用于需要高维稠密和稀疏向量管理的场景。本文将通过示例介绍如何使用 DashVector 的 SelfQueryRetriever 进行向量检索。
## 主要内容
### 1. DashVector 概述
DashVector 提供便捷的 SDK/API 接口,支持实时插入与过滤搜索,能快速集成到上层应用中。特别适用于大模型生态、多模态 AI 搜索、分子结构分析等应用场景。
### 2. 安装必要的组件
要使用 DashVector,需确保安装了 `dashvector` 和 `lark` 包。首先获取 DashVector API 密钥和环境配置。
```bash
%pip install --upgrade --quiet lark dashvector
3. 创建 DashVector 向量存储
使用 DashVector 的 API 创建一个向量存储,并向其中添加数据。这次我们以电影摘要为例。
import os
import dashvector
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.vectorstores import DashVector
from langchain_core.documents import Document
# 配置 API 客户端
client = dashvector.Client(api_key=os.environ["DASHVECTOR_API_KEY"]) # 使用API代理服务提高访问稳定性
embeddings = DashScopeEmbeddings()
# 创建向量存储
client.create("langchain-self-retriever-demo", dimension=1536)
docs = [
Document(page_content="A bunch of scientists bring back dinosaurs and mayhem breaks loose", metadata={"year": 1993, "rating": 7.7, "genre": "action"}),
# 其他电影数据...
]
vectorstore = DashVector.from_documents(
docs, embeddings, collection_name="langchain-self-retriever-demo"
)
4. 创建自查询检索器
为文档支持的元数据字段提供信息,并描述文档内容以初始化检索器。
from langchain.chains.query_constructor.base import AttributeInfo
from langchain.retrievers.self_query.base import SelfQueryRetriever
from langchain_community.llms import Tongyi
metadata_field_info = [
AttributeInfo(name="genre", description="The genre of the movie", type="string or list[string]"),
# 更多字段信息...
]
document_content_description = "Brief summary of a movie"
llm = Tongyi(temperature=0)
retriever = SelfQueryRetriever.from_llm(
llm, vectorstore, document_content_description, metadata_field_info, verbose=True
)
代码示例
使用自查询检索器查找恐龙电影。
retriever.invoke("What are some movies about dinosaurs")
# 预期输出
# [Document(page_content='A bunch of scientists bring back dinosaurs and mayhem breaks loose', metadata={'year': 1993, 'rating': 7.7, 'genre': 'action'})]
常见问题和解决方案
1. 如何处理高维向量存储性能问题?
可通过配置合适的存储大小和优化查询来提高性能。
2. 网络访问不稳定怎么办?
由于某些地区的网络限制,建议使用 API 代理服务提高访问稳定性。
总结和进一步学习资源
DashVector 提供了强大的向量检索功能,非常适合需要快速检索和动态扩展的场景。继续学习可以参考以下资源:
- DashVector 官方文档 # 使用API代理服务提高访问稳定性
- Langchain 项目 GitHub
参考资料
- DashVector 官方博客
- Langchain 库文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---