# 本地AI知识库系统 **Repository Path**: oasosao/local-ai-knowledge-base ## Basic Information - **Project Name**: 本地AI知识库系统 - **Description**: 这是一个功能完整的 本地AI知识库系统 ,结合了向量数据库和大语言模型技术,实现了智能文档管理和问答功能。 该系统展示了如何构建一个基于RAG技术的智能问答系统,为个人和企业提供了一种高效管理和利用知识的方式,尤其适合需要处理和检索大量文档的场景。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-02-22 - **Last Updated**: 2026-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Local AI Knowledge Base ## 项目简介 Local AI Knowledge Base 是一个基于本地大语言模型和向量数据库的智能知识库系统,能够实现文档的语义索引、智能搜索和基于检索增强生成(RAG)的问答功能。 该系统完全运行在本地环境,不需要云服务,保护数据隐私,同时提供了强大的语义理解和智能回答能力。 ## 核心功能 - 📚 **文档索引**:自动将Markdown文档转换为向量并存储 - 🔍 **语义搜索**:基于文本语义相似度进行智能搜索 - 🤖 **RAG问答**:结合检索和生成能力,提供准确的智能回答 - 🔒 **本地运行**:完全离线运行,保护数据隐私 - 📁 **易于扩展**:支持添加新文档,自动重新索引 ## 技术栈 | 技术/库 | 用途 | |--------|------| | Python 3.9+ | 核心编程语言 | | ChromaDB | 向量数据库,存储和检索文档向量 | | Ollama | 本地大模型运行工具 | | embeddinggemma | 文本嵌入模型,生成语义向量 | | qwen3 | 大语言模型,生成RAG回答 | ## 项目结构 ``` local-ai-knowledge-base/ ├── main.py # 主程序文件,包含核心功能实现 ├── search.py # 示例程序,展示基本搜索功能 ├── README.md # 项目说明文档 ├── documents/ # 文档存储目录 │ ├── google.md # 示例文档:Google搜索引擎 │ ├── bing.md # 示例文档:Bing搜索引擎 │ └── ... # 其他网站文档 ├── vector_db/ # 向量数据库存储 │ ├── chroma.sqlite3 # ChromaDB数据库文件 │ └── ... # 向量索引文件 └── .venv/ # Python虚拟环境 ``` ## 安装说明 ### 1. 前置依赖 - Python 3.9 或更高版本 - Ollama (用于运行本地大模型) ### 2. 安装步骤 1. **克隆项目** ```bash git clone cd local-ai-knowledge-base ``` 2. **创建虚拟环境** ```bash python3 -m venv .venv ``` 3. **激活虚拟环境** - macOS/Linux: ```bash source .venv/bin/activate ``` - Windows: ```bash .venv\Scripts\activate ``` 4. **安装依赖包** ```bash pip install chromadb ollama ``` 5. **安装Ollama模型** 系统需要以下Ollama模型: - embeddinggemma (用于文本嵌入) - qwen3 (用于RAG回答) 安装命令: ```bash ollama pull embeddinggemma ollama pull qwen3 ``` ## 使用方法 ### 1. 添加文档 将需要索引的Markdown文档添加到`documents`目录中。文档格式示例: ```markdown --- name: "Google" description: "全球最受欢迎的搜索引擎,提供全面的网页、图片、视频搜索服务" url: https://www.google.com category: 搜索引擎 tags: [搜索,国际,智能,多语言] --- # Google https://www.google.com 全球最受欢迎的搜索引擎,提供全面的网页、图片、视频搜索服务,支持多语言和智能搜索建议。 ``` ### 2. 运行主程序 ```bash python main.py ``` 程序会自动完成以下步骤: 1. 初始化向量数据库 2. 索引`documents`目录中的所有文档 3. 执行RAG问答演示 ### 3. 语义搜索 修改`main.py`文件中的测试查询,或在Python代码中使用: ```python from main import DocumentSearch # 初始化搜索系统 search_system = DocumentSearch() # 执行语义搜索 results = search_system.search("搜索引擎有哪些?", n_results=3) # 打印结果 for result in results: print(f"[{result['rank']}] {result['metadata']['filename']}") print(f"相似度: {result['similarity_score']:.3f}") print(f"内容: {result['document'][:100]}...") print() ``` ### 4. RAG智能问答 ```python # 执行RAG问答 answer = search_system.rag_answer("请介绍几个主要的搜索引擎") print(f"回答: {answer}") ``` ## 配置选项 ### 1. 向量数据库配置 在`DocumentSearch`类初始化时,可以指定向量数据库路径: ```python # 使用自定义路径 search_system = DocumentSearch(db_path="./my_vector_db") ``` ### 2. 文档目录配置 在调用`index_documents`方法时,可以指定文档目录: ```python # 索引自定义目录 search_system.index_documents(documents_dir="./my_documents") ``` ### 3. 搜索结果数量 在调用`search`方法时,可以指定返回的结果数量: ```python # 返回5个结果 results = search_system.search("查询内容", n_results=5) ``` ## 注意事项 1. **模型依赖**:确保已安装所需的Ollama模型,否则会导致运行失败 2. **性能考虑**:首次索引大量文档时可能需要较长时间 3. **内存使用**:处理大型文档时请注意内存使用情况 4. **文档格式**:确保文档为有效的Markdown格式,否则可能影响索引效果 ## 扩展功能 ### 1. 添加新文档 只需将新的Markdown文档添加到`documents`目录,然后重新运行`index_documents`方法即可。 ### 2. 支持其他文件格式 系统目前仅支持Markdown文件,如需支持其他格式(如PDF、Word等),需要添加相应的文件解析器。 ### 3. 自定义模型 可以修改代码使用其他Ollama模型: ```python # 修改嵌入模型 def generate_embedding(self, text: str) -> List[float]: response = ollama.embeddings( model='your-custom-model', # 替换为自定义模型 prompt=text ) return response["embedding"] # 修改RAG模型 def rag_answer(self, query: str) -> str: # ... response = ollama.chat( model='your-custom-model', # 替换为自定义模型 messages=[...] ) # ... ``` ## 故障排除 ### 1. Ollama连接失败 - 确保Ollama服务正在运行 - 检查网络连接 - 验证模型是否正确安装 ### 2. 索引失败 - 检查文档格式是否正确 - 确保文件编码为UTF-8 - 查看日志输出了解具体错误 ### 3. 搜索结果不准确 - 尝试增加文档的详细程度 - 检查文档分类和标签是否合理 - 考虑使用更适合的嵌入模型 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request来改进这个项目! ## 联系方式 如有问题或建议,请通过以下方式联系: - GitHub Issues: [项目仓库链接] - Email: [您的邮箱地址] --- **享受智能知识库带来的便利!** 🚀