AI-Lawyer---RAG-with-DeepSeek-R1
theaifutureguy/AI-Lawyer---RAG-with-DeepSeek-R1加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

"当你手握一份晦涩难懂的法律文书,却不知道从何处下手时,是否渴望一位不知疲倦的法律助手,帮你逐字逐句梳理其中的逻辑?"
AI Lawyer 正是为这样的场景而生——它将 DeepSeek R1 的推理能力与 RAG(检索增强生成)技术相结合,为法律从业者、法学生和普通用户提供一个可对话的法律智能助手。
法律文档的处理长期以来是 AI 应用中最具挑战性的领域之一。与通用文本不同,法律文书对准确性、逻辑严密性和引用出处有着极为严格的要求。一旦 AI 出现"幻觉"(hallucination),捏造法律条款或曲解判例,后果将非常严重。
传统通用大模型在法律问答上的主要痛点有三:
AI Lawyer 项目的作者 theaifutureguy 敏锐地捕捉到了这些痛点,决定构建一个专为法律场景设计的 RAG 系统。核心思路是:不让 AI 凭空回答,而是让它"先查资料,再做推理"——用户上传 PDF 法律文档,系统通过向量检索找到最相关的段落,再由大模型基于检索结果生成答案,从而将回答牢牢锚定在文档原文上。
这一思路在 RAG 领域并不新鲜,但结合 DeepSeek R1 的链式推理(Chain-of-Thought)能力,AI Lawyer 实现了更深层次的法律逻辑分析,而不仅仅是关键词匹配。
从源码分析来看,AI Lawyer 的架构清晰分为四个层次:
PDF上传 → PDFPlumber解析 → RecursiveCharacterTextSplitter切分
↓
HuggingFaceEmbeddings (all-MiniLM-L6-v2)
↓
FAISS 向量数据库持久化
关键参数:
sentence-transformers/all-MiniLM-L6-v2(384 维),兼顾速度和精度值得注意的是,项目中存在两套 embedding 策略的差异:
vector_database.py 使用 HuggingFace Embeddings(all-MiniLM-L6-v2)main.py 中使用 Ollama Embeddings(deepseek-r1:14b 模型内置)这种混用虽不影响功能,但部署时需要注意模型一致性。
采用 Meta 开源的 FAISS(Facebook AI Similarity Search)作为向量检索引擎。FAISS 在百万级向量规模下的相似度检索延迟可控制在毫秒级,非常适合法律文档库场景。
检索时,系统通过 similarity_search 找出 Top-5 最相关文本块,并额外做了一层文件级别过滤——确保召回的内容来自用户上传的同一份 PDF,避免跨文档混淆。
核心推理依赖 DeepSeek R1 Distill Llama 70B,通过 Groq API 接入。Groq 提供的 LPU(Language Processing Unit)推理芯片在吞吐量上有显著优势,DeepSeek R1 70B 的推理速度远超同类模型。
Prompt 设计采用了 RAG 经典模板:
Use the pieces of information provided in the context to answer user's question.
If you dont know the answer, just say that you dont know, dont try to make up an answer.
Dont provide anything out of the given context
这一约束性 Prompt 在很大程度上压制了幻觉,但无法完全消除——RAG 的本质是"限制回答范围",而非"保证答案绝对正确"。
Web 界面采用 Streamlit 构建,提供三大功能:
| 功能 | 实现方式 |
|---|---|
| PDF 上传与索引 | st.file_uploader + pdfplumber 解析 |
| 文档摘要 | 调用 summarize_document() 生成结构化摘要 |
| 对话问答 | st.chat_message 交互式问答界面 |
| 报告生成 | ReportLab 生成可下载 PDF 报告 |
界面支持深色模式,采用自定义 CSS 样式,整体风格偏向现代科技感。
实测流程:上传一份法律合同 PDF → 系统自动解析文本并切块 → 建立向量索引 → 用户提问 → 系统检索相关段落 → 生成答案。
关键体验点:
rag_pipeline.py 中的 generate_report() 函数使用 ReportLab 将对话历史导出为 PDF。这对于律师整理案件分析记录非常实用——每轮问答结束后,用户可直接下载结构化报告,无需手动复制粘贴。
在 rag_pipeline.py 中,answer_query() 接收 history 参数,支持多轮对话上下文。不过 frontend.py 中尚未完全集成会话历史管理(st.session_state 有基础实现但未深度使用)。
# 克隆仓库
git clone https://github.com/theaifutureguy/AI-Lawyer---RAG-with-DeepSeek-R1.git
cd AI-Lawyer---RAG-with-DeepSeek-R1
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scriptsctivate
# 安装依赖
pip install -r requirements.txt
requirements.txt 包含了完整的 LangChain 生态依赖(langchain、langchain-community、langchain-groq 等),总计约 90+ 个包,首次安装建议预留 5-10 分钟。
项目使用 Groq API 访问 DeepSeek R1,需要免费注册获取 API Key:
.env 文件:GROQ_API_KEY=your_api_key_here
Groq 提供免费额度(每分钟 30 次请求),对于个人学习和小规模使用完全够用。
streamlit run frontend.py
应用默认在 http://localhost:8501 启动,首次运行会自动下载 HuggingFace embedding 模型(约 90MB)。
AI Lawyer 是一个目标明确、技术栈扎实的法律 AI 工具原型。它将 DeepSeek R1 的推理能力、RAG 的检索增强和 Streamlit 的快速可视化完美结合,在 GitHub 上获得了 37 Stars 的关注度(考虑到项目相对小众,这一数字说明了其在垂直领域的影响力)。
适合人群:
不适合:
作为开源法律 AI 工具,AI Lawyer 展示了 RAG 技术在垂直领域落地的可行性,其技术选型(LangChain + FAISS + DeepSeek R1)也代表了当前中小型 AI 项目的最佳实践之一。
本报告基于源码分析、README 文档及项目架构解读生成,部分功能细节以实际部署为准。