如何高效使用Quivr存储层API:直接操作图数据的完整指南
如何高效使用Quivr存储层API:直接操作图数据的完整指南
Quivr是一个专注于将生成式AI集成到应用程序中的开源RAG框架,它允许开发者轻松集成各种LLM(如GPT4、Groq、Llama)、向量存储(如PGVector、Faiss)和文件处理功能。本文将详细介绍Quivr存储层API的核心功能、使用方法和最佳实践,帮助开发者快速掌握直接操作图数据的高级接口。
Quivr存储层API的核心架构
Quivr的存储层是整个系统的基础,负责管理向量数据的存储、检索和更新。从项目的架构图中可以清晰看到,存储层通过Supabase实现,与FastAPI后端和Celery Worker紧密协作,处理Embeddings的生成和存储。
存储层的核心组件
-
CustomSupabaseVectorStore:位于
backend/api/quivr_api/vectorstore/supabase.py的自定义向量存储类,继承自LangChain的SupabaseVectorStore,提供了增强的图数据操作功能。 -
向量数据表:在Supabase中,
brains_vectors表用于存储向量数据,与其他表如knowledge、models等紧密关联,形成完整的数据存储体系。
快速上手:存储层API的基础操作
初始化向量存储实例
要使用Quivr的存储层API,首先需要初始化CustomSupabaseVectorStore实例。以下是基本的初始化代码:
from quivr_api.vectorstore.supabase import CustomSupabaseVectorStore
from supabase import create_client
# 初始化Supabase客户端
supabase_client = create_client(SUPABASE_URL, SUPABASE_KEY)
# 创建向量存储实例
vector_store = CustomSupabaseVectorStore(
client=supabase_client,
embedding=your_embedding_model,
table_name="brains_vectors",
brain_id=your_brain_id,
user_id=current_user_id,
number_docs=35,
max_input=2000
)
核心API方法详解
1. 相似度搜索(similarity_search)
该方法用于根据查询文本在向量库中查找最相似的文档,是RAG系统的核心功能。
# 搜索与"如何使用Quivr存储层API"最相似的文档
documents = vector_store.similarity_search(
query="如何使用Quivr存储层API",
k=10, # 返回前10个结果
threshold=0.7 # 相似度阈值
)
2. 脑库相似度查询(find_brain_closest_query)
该方法用于查找与查询最相关的脑库(Brains),适用于多脑库场景下的自动路由。
# 查找与查询最相关的脑库
brain_details = vector_store.find_brain_closest_query(
user_id=current_user_id,
query="人工智能最新发展趋势",
k=3 # 返回前3个最相关的脑库
)
高级技巧:优化向量存储性能
批量操作数据
对于大量数据的导入,建议使用批量操作以提高效率:
# 批量添加文档到向量库
vector_store.add_documents(documents=your_document_list)
自定义查询参数
通过调整number_docs和max_input参数,可以平衡检索性能和结果质量:
# 调整参数以优化性能
vector_store = CustomSupabaseVectorStore(
...,
number_docs=50, # 增加每次检索的文档数量
max_input=3000 # 提高输入文本的最大长度
)
实际应用场景
智能问答系统
利用存储层API构建智能问答系统,快速检索相关知识:
def get_answer(question, brain_id, user_id):
# 初始化向量存储
vector_store = CustomSupabaseVectorStore(
client=supabase_client,
embedding=embedding_model,
table_name="brains_vectors",
brain_id=brain_id,
user_id=user_id
)
# 检索相关文档
relevant_docs = vector_store.similarity_search(query=question)
# 生成回答(此处省略LLM调用部分)
answer = generate_answer(question, relevant_docs)
return answer
多脑库管理
通过find_brain_closest_query方法实现多脑库的自动路由:
def route_query_to_brain(query, user_id):
# 初始化向量存储(不指定具体脑库)
vector_store = CustomSupabaseVectorStore(
client=supabase_client,
embedding=embedding_model,
table_name="brains_vectors",
user_id=user_id
)
# 查找最相关的脑库
brain_details = vector_store.find_brain_closest_query(
user_id=user_id,
query=query
)
# 路由到最相关的脑库进行处理
if brain_details and brain_details[0]["similarity"] > 0.6:
return process_query_with_brain(query, brain_details[0]["id"], user_id)
else:
return "抱歉,我无法找到相关的知识库来回答您的问题。"
总结与最佳实践
Quivr存储层API为开发者提供了强大而灵活的图数据操作能力,通过合理使用这些接口,可以构建高效、准确的RAG应用。以下是一些最佳实践:
-
合理设置参数:根据应用场景调整
number_docs和max_input等参数,平衡性能和结果质量。 -
批量处理数据:对于大量数据操作,优先使用批量方法以提高效率。
-
监控性能:定期检查向量存储的性能,必要时进行索引优化或数据清理。
-
参考官方文档:更多高级功能和最佳实践,请参考项目的官方文档。
通过掌握Quivr存储层API,开发者可以更专注于产品功能的实现,而不必过多关注底层的向量存储细节,从而加速GenAI应用的开发过程。
更多推荐




所有评论(0)