Files
ailine/backend/app/rag/__init__.py
2026-04-21 19:06:34 +08:00

67 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
RAG 检索与生成模块
提供在线检索与生成功能,包括:
- 基础向量检索(稠密向量 / 混合检索)
- 重排序Cross-Encoder
- 多路查询改写Multi-Query
- RRF 融合Reciprocal Rank Fusion
- 完整的 RAG 流水线
- Agent 工具封装
固定流水线:
用户查询 → 多路改写 → 并行检索 → RRF 融合 → 重排序 → 返回父文档
示例用法:
>>> from app.rag.rag import RAGPipeline, create_rag_tool
>>> from rag_indexer.builder import IndexBuilder, IndexBuilderConfig
>>> from langchain_openai import ChatOpenAI
>>>
>>> # 获取基础检索器(如父子块检索器)
>>> config = IndexBuilderConfig(collection_name="my_docs")
>>> builder = IndexBuilder(config)
>>> retriever = builder.retriever
>>>
>>> # 创建 LLM 和流水线
>>> llm = ChatOpenAI(model="gpt-3.5-turbo")
>>> pipeline = RAGPipeline(retriever=retriever, llm=llm)
>>>
>>> # 检索
>>> docs = await pipeline.aretrieve("什么是 RAG")
>>> context = pipeline.format_context(docs)
>>>
>>> # 创建 Agent 工具
>>> rag_tool = create_rag_tool(retriever=retriever, llm=llm)
"""
from .retriever import (
create_base_retriever,
create_hybrid_retriever,
)
from .reranker import LLaMaCPPReranker
from .query_transform import MultiQueryGenerator
from .fusion import reciprocal_rank_fusion
from .pipeline import RAGPipeline
from .tools import create_rag_tool_sync
__all__ = [
# 检索器工厂函数
"create_base_retriever",
"create_hybrid_retriever",
# 重排序器
"LLaMaCPPReranker",
# 查询改写生成器
"MultiQueryGenerator",
# 融合算法
"reciprocal_rank_fusion",
# 主流水线
"RAGPipeline",
# 工具创建(供 Agent 使用)
"create_rag_tool_sync",
]