base_rag/QUICK_START.md

3.3 KiB
Raw Blame History

快速开始指南

安装依赖

  1. 激活虚拟环境:
source venv/bin/activate
  1. 安装依赖:
pip install -r requirements.txt

基本使用

1. 创建 RAG 类实例

from base_rag.core import BaseRAG, FileStatus

class MyRAG(BaseRAG):
    def ingest(self, file_path: str, **kwargs):
        return self.process_file_to_vector_store(file_path, **kwargs)
    
    def query(self, question: str) -> str:
        docs = self.similarity_search_with_rerank(question)
        if not docs:
            return "没有找到相关信息"
        return "\n".join([doc.page_content for doc in docs])

# 创建实例
rag = MyRAG(
    vector_store_name="my_kb",          # 知识库名称
    storage_directory="./documents",     # 文件存储目录
    status_db_path="./file_status.db"   # 状态数据库
)

2. 处理文件

# 处理单个文件
result = rag.ingest("path/to/your/document.txt")
print(f"处理结果: {result['message']}")

# 批量处理文件
import os
for filename in os.listdir("./documents"):
    if filename.endswith(('.txt', '.md', '.doc', '.docx')):
        result = rag.ingest(f"./documents/{filename}")
        print(f"{filename}: {result['message']}")

3. 查询知识库

# 搜索相关文档
answer = rag.query("你的问题")
print(answer)

4. 查看文件状态

# 查看所有文件状态
all_files = rag.get_file_processing_status()
for file_info in all_files:
    print(f"{file_info['filename']}: {file_info['status']}")

# 查看已完成的文件
completed = rag.list_files_by_status(FileStatus.COMPLETED)
print(f"已处理完成: {len(completed)} 个文件")

# 查看处理失败的文件
failed = rag.list_files_by_status(FileStatus.ERROR)
for file_info in failed:
    print(f"失败文件: {file_info['filename']}")
    print(f"错误信息: {file_info['error_message']}")

支持的文件格式

  • .txt - 纯文本文件
  • .md - Markdown 文件
  • .doc/.docx - Word 文档(需要安装 unstructuredpython-docx

主要特性

  1. 自动去重:相同内容的文件不会重复处理
  2. 状态跟踪:实时跟踪文件处理状态
  3. 错误处理:处理失败的文件会记录错误信息
  4. 简单API:易于使用和扩展
  5. 持久化存储:使用 SQLite 数据库记录状态

运行示例

# 激活环境
source venv/bin/activate

# 运行完整示例
python examples/file_processing_example.py

# 运行简单测试
python examples/simple_test.py

配置选项

文档切分参数

result = rag.ingest(
    "document.txt",
    chunk_size=500,      # 切分块大小
    chunk_overlap=50     # 重叠大小
)

嵌入模型配置

rag = MyRAG(
    embedding_config={
        "type": "local",
        "model_name": "BAAI/bge-small-zh-v1.5"
    }
)

重排模型配置

rag = MyRAG(
    rerank_config={
        "enabled": True,
        "type": "local",
        "model": "BAAI/bge-reranker-base",
        "top_k": 3
    }
)

数据存储

  • 文件存储./documents/ 目录(可配置)
  • 向量数据库./chroma_db/ 目录
  • 状态数据库./file_status.db 文件

文件名格式:原文件名_哈希值前8位.扩展名