这个仓库 stocks-insights-ai-agent
是一个用于提取股票市场相关新闻和金融数据洞察的项目。它利用 Agentic 检索增强生成(RAG)工作流,结合大语言模型(LLMs)、ChromaDB 向量数据库、LangChain、LangChain 表达式语言(LCEL)和 LangGraph 来提供全面的分析。
主要特性
- 股票表现可视化:展示所选股票的历史表现图表。
- 特定属性数据检索:获取特定股票的详细属性信息。
- 新闻聚合:提供特定股票或公司的通用新闻或专题文章。
项目结构
stocks-insights-ai-agent/
├── LICENSE.md
├── README.md
├── rest_api/
│ ├── main.py
│ ├── routes/
│ └── tests/
├── images/
│ ├── classes_stock_proj.png
│ ├── news-rag-graph.png
│ ├── packages_stock_proj.png
│ ├── stock-charts-rag-graph.png
│ └── stock-data-rag-graph.png
├── config/
│ ├── __init__.py
│ ├── config.json
│ └── config_loader.py
├── rag_graphs/
│ ├── news_rag_graph/
│ ├── stock_charts_graph/
│ └── stock_data_rag_graph/
├── documentation/
│ ├── high_level_design.png
│ └── openapi.json
├── db/
│ ├── __init__.py
│ ├── models/
│ ├── mongo_db.py
│ └── postgres_db.py
├── scraper/
│ ├── ...
├── utils/
│ ├── logger.py
│ ├── logger_config.py
│ └── tests/
主要模块和功能
数据抓取
scraper/
:包含各种数据抓取器的实现。scraper_factory.py
:使用工厂模式创建不同类型的抓取器实例,如StockScraperFactory
和NewsScraperFactory
。stock_data_scraper.py
:从 Yahoo Finance 同步获取股票历史数据,并将其插入到 PostgreSQL 数据库中。news_scraper.py
:从 Yahoo News 抓取特定股票的新闻文章,并将其存储在 MongoDB 中。
数据库操作
db/
:包含数据库操作的实现。mongo_db.py
:提供 MongoDB 客户端的单例实现,支持插入、查询、更新和删除操作。postgres_db.py
:提供 PostgreSQL 客户端的单例实现,支持执行 SQL 查询和 CRUD 操作。
RAG 工作流
rag_graphs/
:包含不同类型的 RAG 图实现。news_rag_graph/
:用于搜索新闻数据的 RAG 图,包括从向量数据库检索、文档评分、网络搜索和结果生成等节点。stock_data_rag_graph/
:用于搜索金融数据的 RAG 图,包括生成 SQL 查询、执行 SQL 查询和结果生成等节点。stock_charts_graph/
:用于检索金融数据并生成可视化图表的 RAG 图。
REST API
rest_api/
:包含 FastAPI 实现的 REST API。main.py
:初始化 FastAPI 应用,启动后台数据抓取任务,并包含根路由。routes/
:包含具体的 API 路由实现。
配置管理
config/
:包含项目的配置文件和配置加载器。config.json
:存储项目的配置信息,如要抓取的股票代码和抓取间隔。config_loader.py
:用于加载和解析配置文件。
API 接口
GET /stock/{ticker}/price-stats
:获取特定股票代码的价格统计信息。GET /stock/{ticker}/chart
:获取特定股票代码的价格统计信息并返回直方图/图表。
总结
这个项目通过异步数据抓取、RAG 工作流和 REST API 提供了一个全面的股票数据洞察解决方案,能够帮助用户从新闻和金融数据中提取有价值的信息。