# langchain_test **Repository Path**: Guozhipengaaa/langchain_test ## Basic Information - **Project Name**: langchain_test - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-05 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LangChain RAG 示例项目 ## 项目简介 这是一个基于 LangChain + Chroma + Streamlit 的本地知识库问答示例,包含两部分能力: - 知识库更新:上传 `.txt` 文件并写入向量库 - 在线问答:基于检索增强生成(RAG)进行多轮问答 ## 功能入口 - 启动知识库上传界面 ```bash streamlit run app_file_uploader.py ``` - 启动在线问答界面 ```bash streamlit run app_qa.py ``` ## 环境准备 - Python 3.11(推荐) - 安装依赖 ```bash pip install -r requirements.txt ``` - 如果使用本地向量模型(Ollama Embedding),额外安装 ```bash pip install langchain-ollama ``` ## 环境变量 在项目根目录创建 `.env`,常用变量如下: ```env DASHSCOPE_API_KEY=你的DashScope密钥 OLLAMA_BASE_URL=http://localhost:11434/v1 OPENAI_API_KEY=任意非空字符串 ``` 说明: - 使用 DashScope 时需要 `DASHSCOPE_API_KEY` - 使用 Ollama 的 OpenAI 兼容接口时通常需要 `OLLAMA_BASE_URL` - 某些 OpenAI 兼容客户端会校验 `OPENAI_API_KEY` 是否存在 ## 主要文件说明 - `app_file_uploader.py`:知识库文本上传界面 - `app_qa.py`:RAG 聊天问答界面 - `knowledge_base.py`:文本切分、去重(md5)与入库逻辑 - `vector_stores.py`:向量库检索封装 - `rag.py`:检索与提示词编排、对话链路 - `file_history_store.py`:会话历史存储 - `my_func/chat_model.py`:聊天模型创建 - `my_func/embedding.py`:Embedding 模型创建 - `config_data.py`:项目配置项 ## 项目结构 ```text lang_test/ ├─ app_file_uploader.py ├─ app_qa.py ├─ config_data.py ├─ file_history_store.py ├─ knowledge_base.py ├─ rag.py ├─ vector_stores.py ├─ requirements.txt ├─ my_func/ │ ├─ chat_model.py │ └─ embedding.py ├─ test/ │ ├─ chain_test.py │ ├─ file_message_history.py │ ├─ loader.py │ ├─ main.py │ ├─ prompt_test.py │ └─ vector.py └─ chroma_db/ (运行后自动生成) ``` ## 运行流程建议 1. 先配置 `.env` 与依赖 2. 启动 `app_file_uploader.py` 上传文本,构建知识库 3. 启动 `app_qa.py` 进行问答测试 ## 常见问题 - 报错 `did not find dashscope_api_key` - 说明未配置 `DASHSCOPE_API_KEY`,或未正确加载 `.env` - 报错 `does not support tools` - 说明当前模型不支持工具调用,需切换到支持 tool calling 的模型或不用 agent tools