如何高效使用Quivr存储层API:直接操作图数据的完整指南

【免费下载链接】quivr Opiniated RAG for integrating GenAI in your apps 🧠 Focus on your product rather than the RAG. Easy integration in existing products with customisation! Any LLM: GPT4, Groq, Llama. Any Vectorstore: PGVector, Faiss. Any Files. Anyway you want. 【免费下载链接】quivr 项目地址: https://gitcode.com/GitHub_Trending/qui/quivr

Quivr是一个专注于将生成式AI集成到应用程序中的开源RAG框架,它允许开发者轻松集成各种LLM(如GPT4、Groq、Llama)、向量存储(如PGVector、Faiss)和文件处理功能。本文将详细介绍Quivr存储层API的核心功能、使用方法和最佳实践,帮助开发者快速掌握直接操作图数据的高级接口。

Quivr存储层API的核心架构

Quivr的存储层是整个系统的基础,负责管理向量数据的存储、检索和更新。从项目的架构图中可以清晰看到,存储层通过Supabase实现,与FastAPI后端和Celery Worker紧密协作,处理Embeddings的生成和存储。

Quivr架构图

存储层的核心组件

  1. CustomSupabaseVectorStore:位于backend/api/quivr_api/vectorstore/supabase.py的自定义向量存储类,继承自LangChain的SupabaseVectorStore,提供了增强的图数据操作功能。

  2. 向量数据表:在Supabase中,brains_vectors表用于存储向量数据,与其他表如knowledgemodels等紧密关联,形成完整的数据存储体系。

Supabase数据表结构

快速上手:存储层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_docsmax_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应用。以下是一些最佳实践:

  1. 合理设置参数:根据应用场景调整number_docsmax_input等参数,平衡性能和结果质量。

  2. 批量处理数据:对于大量数据操作,优先使用批量方法以提高效率。

  3. 监控性能:定期检查向量存储的性能,必要时进行索引优化或数据清理。

  4. 参考官方文档:更多高级功能和最佳实践,请参考项目的官方文档。

通过掌握Quivr存储层API,开发者可以更专注于产品功能的实现,而不必过多关注底层的向量存储细节,从而加速GenAI应用的开发过程。

【免费下载链接】quivr Opiniated RAG for integrating GenAI in your apps 🧠 Focus on your product rather than the RAG. Easy integration in existing products with customisation! Any LLM: GPT4, Groq, Llama. Any Vectorstore: PGVector, Faiss. Any Files. Anyway you want. 【免费下载链接】quivr 项目地址: https://gitcode.com/GitHub_Trending/qui/quivr

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐