自动抵押贷款系统
一个全面的人工智能系统,用于使用检索增强生成(RAG)、嵌入和文档处理来自动化和分析抵押贷款申请。
项目概述
该项目实施了一个智能抵押贷款处理系统,该系统:
- 提取物 PDF、DOCX文件和图像中的文本(支持OCR)
- 块 将文档划分为可管理的部分,以实现高效检索
- 嵌入 使用句子变换器进行语义搜索的文本
- 商店 向量数据库中的嵌入(Chroma)
- 检索 基于自然语言查询的相关文档
- 生成 使用FLAN-T5语言模型的准确答案
项目结构
Automated-Mortgage-Loan-System/
├── Embedding/
│ ├── vector_embedding.ipynb # Main RAG pipeline notebook
│ ├── Documents/ # Input documents folder
│ └── Output/ # Generated embeddings and outputs
├── FineTuning/ # (Coming Soon) Model fine-tuning module
├── MCP/ # (Coming Soon) Model Context Protocol integration
├── .venv/ # Python virtual environment
├── requirements.txt # Project dependencies
└── README.md # This file快速开始
先决条件
- Python 3.9+
- 虚拟环境(推荐)
- Tesseract OCR(用于PDF/图像处理)
安装
- 克隆存储库:
git clone
cd Automated-Mortgage-Loan-System- 创建并激活虚拟环境:
python -m venv .venv
.\.venv\Scripts\Activate.ps1 # Windows
source .venv/bin/activate # Linux/Mac- 安装依赖项:
pip install -r requirements.txt- 安装Tesseract OCR:
- 窗户: 从下载安装程序 - Linux: sudo apt-get install tesseract-ocr poppler-utils - 雨衣: brew install tesseract poppler
用法
选项1:Jupyter Notebook(推荐用于探索)
jupyter notebook Embedding/vector_embedding.ipynb选项2:Python脚本
python Embedding/vector_embedding.ipynb注: 主笔记本(vector_embedding.ipynb)设计用于在本地Jupyter环境和Google Colab中工作。
选项3:Google Colab(基于云,无需本地设置)
打开 .ipynb 文件直接在 谷歌Colab
配置
块大小
修改分块函数中的块参数:
def chunk_text(text, chunk_size=150, overlap=25):
# chunk_size: words per chunk (default: 150)
# overlap: words shared between consecutive chunks (default: 25)指导方针:
- 150-300字: 具体查询、详细检索
- 300-500字: 平衡准确性和覆盖范围
- 500+字: 广泛的背景,更少的块
嵌入模型
更改单元格3中的嵌入模型:
EMBEDDING_MODEL_NAME = "all-mpnet-base-v2" # High accuracy
# EMBEDDING_MODEL_NAME = "all-MiniLM-L6-v2" # Faster alternative生成模型
调整语言模型以进行答案合成:
GEN_MODEL_NAME = "google/flan-t5-base" # Use 'flan-t5-large' for GPU systems主要特点
文档处理
- PDF提取: 基于文本和OCR(处理扁平PDF)
- DOCX支持: 段落摘录
- 图像支持: 带预处理(对比度调整、去噪)的OCR
- 自动分块: 可配置的重叠以保存上下文
矢量存储器
- Chroma DB: 持久本地矢量数据库
- 语义搜索: 按含义而非关键字查找文档
- Top-K检索: 可配置的检索计数
RAG管道
- 上下文组装: 将检索到的块与查询相结合
- 快速工程: 系统提示可靠答案
- 来源追踪: 生成答案的来源归因
- 代币预算: 高效的上下文截断
质量保证
- 质量保证模型: 可选的精确跨度提取(SQuAD v2)
- 距离度量: 检索文档的相关性评分
- 元数据跟踪: 文档源和块索引
示例用法
from rag_pipeline import rag_answer
# Ask a question
question = "What are the eligibility criteria for a mortgage loan?"
result = rag_answer(question, top_k=3)
print("Answer:", result["answer"])
print("Sources:", result["provenance"])即将推出的模块
微调(即将推出)
- 微调抵押贷款特定数据的嵌入模型
- 使用特定领域的示例优化答案生成
- 评估和基准测试RAG系统性能
MCP(即将推出)
- 模型上下文协议集成
- 高级工具调用功能
- 增强复杂查询的多步推理
性能提示
- GPU加速: 使用GPU实现更快的嵌入和生成
# Check GPU availability
python -c "import torch; print(torch.cuda.is_available())"- 批量处理: 调整嵌入单元中的批量大小以提高内存效率
- 缓存: 尽可能重用计算嵌入
- 型号尺寸: 使用较小的模型可实现更快的推理,使用较大的模型可提高准确性
故障排除
| 问题 | 解决方案 |
|---|---|
| 未找到Tesseract | 安装Tesseract并在单元格3中设置正确的路径 |
| 内存不足 | 减小批处理大小或使用较小的嵌入模型 |
| 嵌入速度慢 | 使用 all-MiniLM-L6-v2 而不是 all-mpnet-base-v2 |
| 检索不佳 | 调整块大小或更改嵌入模型 |
作者
祝福未来04
🤝 贡献
欢迎投稿!请遵循标准的Git工作流程:
- 创建要素分支
- 进行更改
- 以明确的信息提交
- 推送并创建拉取请求
联系
如有疑问或问题,请打开GitHub issue。
______________________________________________________________________
