Mini RAG 企业文档问答系统

Mini RAG 企业文档问答系统 有。建议你先做一个**最小版 AI 知识库问答项目**非常适合大数据开发转 AI。项目名# Mini RAG 企业文档问答系统功能1. 上传/读取本地文档2. 切分文本3. 向量化4. 存入向量库5. 用户提问6. 检索相关内容7. 调用大模型回答技术栈textPythonFastAPILangChainFAISSOpenAI / 通义千问 / DeepSeek API项目结构textmini-rag/├── app.py├── ingest.py├── ask.py├── docs/│ └── demo.txt├── vectorstore/├── requirements.txt└── .env---## 1. requirements.txttxtfastapiuvicornpython-dotenvlangchainlangchain-communitylangchain-openaifaiss-cputiktoken---## 2. .envenvOPENAI_API_KEY你的API_KEY也可以后面换成 DeepSeek、通义千问。---## 3. docs/demo.txttxt公司规定1. 员工每年有5天带薪病假。2. 报销需要在30天内提交发票。3. 加班需要提前经过直属主管审批。4. 远程办公每周最多2天。---## 4. ingest.py构建知识库pythonfrom langchain_community.document_loaders import TextLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain_openai import OpenAIEmbeddingsfrom langchain_community.vectorstores import FAISSfrom dotenv import load_dotenvload_dotenv()loader TextLoader(docs/demo.txt, encodingutf-8)docs loader.load()splitter RecursiveCharacterTextSplitter(chunk_size300,chunk_overlap50)chunks splitter.split_documents(docs)embeddings OpenAIEmbeddings()db FAISS.from_documents(chunks, embeddings)db.save_local(vectorstore)print(知识库构建完成)运行bashpython ingest.py---## 5. ask.py命令行问答pythonfrom langchain_openai import ChatOpenAI, OpenAIEmbeddingsfrom langchain_community.vectorstores import FAISSfrom dotenv import load_dotenvload_dotenv()embeddings OpenAIEmbeddings()db FAISS.load_local(vectorstore,embeddings,allow_dangerous_deserializationTrue)llm ChatOpenAI(modelgpt-4o-mini, temperature0)while True:question input(请输入问题)if question in [exit, quit]:breakdocs db.similarity_search(question, k3)context \n.join([doc.page_content for doc in docs])prompt f你是企业知识库助手。请只根据下面的资料回答问题。资料{context}问题{question}response llm.invoke(prompt)print(\n回答)print(response.content)print(- * 50)运行bashpython ask.py可以问text远程办公一周最多几天报销多久内提交加班需要审批吗---## 6. app.py做成接口pythonfrom fastapi import FastAPIfrom pydantic import BaseModelfrom dotenv import load_dotenvfrom langchain_openai import ChatOpenAI, OpenAIEmbeddingsfrom langchain_community.vectorstores import FAISSload_dotenv()app FastAPI()embeddings OpenAIEmbeddings()db FAISS.load_local(vectorstore,embeddings,allow_dangerous_deserializationTrue)llm ChatOpenAI(modelgpt-4o-mini, temperature0)class QuestionRequest(BaseModel):question: strapp.post(/ask)def ask(req: QuestionRequest):docs db.similarity_search(req.question, k3)context \n.join([doc.page_content for doc in docs])prompt f你是企业知识库助手。请只根据下面资料回答问题。如果资料中没有答案请回答资料中没有相关信息。资料{context}问题{req.question}response llm.invoke(prompt)return {question: req.question,answer: response.content,sources: [doc.page_content for doc in docs]}启动bashuvicorn app:app --reload访问texthttp://127.0.0.1:8000/docs---这个小项目就是企业级 RAG 的最小版本。你后面可以一步步升级成简历项目texttxt 文档问答→ PDF 问答→ Word 问答→ MySQL 问数→ 加权限→ 加前端→ 加 LangGraph Agent→ 做成 AI 数据分析平台你第一个目标就做这个**一周内跑通 Mini RAG**。