SEC文件分析系统

一个基于检索增强生成(RAG)的系统,用于分析特斯拉、英伟达和Netflix的SEC文件(10-K、10-Q、8-K),使用Redis向量数据库、MCP服务器和GPT-4o-mini。

  • by chirag-santwani
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 chirag-santwani/AgenticRAG-MCP

使用说明

代理RAG PoC-SEC文件分析仪

代理RAG(检索增强生成)系统的概念证明,该系统使用Redis矢量数据库、MCP服务器和GPT-4o-mini分析特斯拉、英伟达和Netflix的SEC文件(10-K、10-Q、8-K)。

架构概述

技术栈

  • 语言:Python 3.10+
  • 后端:FastAPI
  • 前端:流光灯
  • LLM框架:朗链
  • LLM:GPT-4o-mini
  • 嵌入:OpenAI文本嵌入-3大(3072个维度)
  • 矢量数据库:带有RediSearch的Redis
  • 连接层:Redis MCP服务器(Docker)
  • 数据源:秒埃德加

项目结构

agentic-rag-poc/
├── backend/
│   ├── app.py                 # FastAPI main
│   ├── agents/
│   │   ├── __init__.py
│   │   ├── sec_agent.py       # Main agent logic
│   │   └── tools.py           # Agent tools
│   ├── data_pipeline/
│   │   ├── __init__.py
│   │   ├── downloader.py      # SEC filing downloader
│   │   ├── parser.py          # Document parser
│   │   ├── chunker.py         # Text chunking with context
│   │   └── embedder.py        # Embedding generation
│   ├── database/
│   │   ├── __init__.py
│   │   ├── redis_client.py    # Redis connection via MCP
│   │   └── vector_store.py    # Vector operations
│   └── config/
│       └── settings.py        # Configuration
├── frontend/
│   └── streamlit_app.py       # Streamlit UI
├── data/
│   └── filings/               # Downloaded filings
├── notebooks/
│   └── testing.ipynb          # Testing notebook
├── docker-compose.yml         # For Redis & MCP
├── requirements.txt
└── .env                       # API keys

入门指南

先决条件

  • Python 3.10或更高版本
  • Docker和Docker Compose
  • OpenAI API密钥

安装

  1. 克隆存储库

    git clone <repository-url>
    cd AgenticRAG-MCP
    
  2. 设置环境变量

    cp .env.example .env
    # Edit .env and add your OpenAI API key and other configurations
    
  3. 创建虚拟环境

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  4. 安装依赖项

    pip install -r requirements.txt
    
  5. 启动Redis和MCP服务器

    docker-compose up -d
    

运行应用程序

  1. 启动FastAPI后端

    cd backend
    uvicorn app:app --reload --host 0.0.0.0 --port 8000
    
  2. 启动Streamlit前端

    cd frontend
    streamlit run streamlit_app.py
    
  3. 访问应用程序

    • 前端:http://localhost:8501
    • 后端API:http://localhost:8000
    • API文件:http://localhost:8000/docs
    • 重新发现:http://localhost:8001

特性

  • 自动SEC文件下载:下载特斯拉、英伟达和网飞的10-K、10-Q和8-K文件
  • 智能文档解析:摘录并处理美国证券交易委员会文件中的相关章节
  • 上下文感知分块:将文档拆分为有意义的块,同时保留上下文
  • 矢量搜索:使用Redis矢量数据库进行高效的相似性搜索
  • RAG代理:LangChain驱动的智能查询处理代理
  • 交互式用户界面:基于Streamlit的查询和分析界面

组件

后端

  • FastAPI服务器:用于数据接收和查询的RESTful API
  • SEC代理人:LangChain代理,配备用于SEC文件分析的定制工具
  • 数据管道:下载、解析、分块和嵌入SEC文档
  • 向量存储:用于嵌入的基于Redis的向量数据库

前端

  • Streamlit应用程序:用于查询SEC文件的交互式UI
  • 可视化:显示结果、引用和文档元数据

配置

中的关键配置选项 .env:

  • OPENAI_API_KEY:您的OpenAI API密钥
  • REDIS_HOST, REDIS_PORT:Redis连接详细信息
  • EMBEDDING_MODEL:OpenAI嵌入模型(text-embedding-3-large)
  • LLM_MODEL:LLM型号(gpt-4o-mini)
  • CHUNK_SIZE, CHUNK_OVERLAP:文本分块参数

发展

测试

pytest

Jupyter 笔记本

探索 notebooks/ 测试和实验目录。

许可证

这是一个用于演示目的的概念验证项目。

致谢

  • SEC EDGAR允许公众访问公司文件
  • OpenAI用于LLM和嵌入模型
  • Redis提供矢量数据库功能
  • LangChain用于代理框架