Skip to content

知识管理与检索系统,基于大模型和向量数据库构建的智能文档管理和问答平台。

Notifications You must be signed in to change notification settings

liusai0820/knowledge-hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Knowledge Hub

知识管理与检索系统,基于大模型和向量数据库构建的智能文档管理和问答平台。

项目概述

Knowledge Hub 是一个现代化的知识管理平台,允许用户上传、组织、搜索和检索各种知识文档。系统使用先进的NLP技术和大模型进行文档处理、语义搜索和智能问答,支持多种文档格式,包括PDF、Word和文本文件。

功能特点

  • 文档管理:上传、查看和删除多种格式的文档
  • 文本提取:自动从PDF、Word等文档中提取文本和元数据
  • OCR处理:支持扫描文档的文本识别
  • 向量化存储:使用先进的嵌入模型将文档内容向量化
  • 多模式搜索:支持关键词搜索、语义搜索和混合搜索
  • 智能问答:基于RAG(检索增强生成)的智能问答系统
  • 引用追踪:问答结果自动提供信息来源
  • Web界面:直观的用户界面,支持文档管理和问答

技术栈

  • 后端框架: FastAPI
  • 搜索引擎: Elasticsearch
  • 向量数据库: Milvus
  • 大模型集成: Mistral AI API
  • OCR处理: Mistral Vision API
  • 文本处理: PyPDF2, python-docx
  • 前端界面: Streamlit
  • 部署: Docker, Docker Compose

项目结构

knowledge_hub/
├── app/                    # 应用代码
│   ├── api/                # API路由
│   │   ├── admin.py        # 管理API
│   │   ├── chat.py         # 问答API
│   │   ├── dependencies.py # API依赖
│   │   ├── documents.py    # 文档API
│   │   └── search.py       # 搜索API
│   ├── core/               # 核心模块
│   │   ├── config.py       # 配置管理
│   │   ├── document_processor.py # 文档处理
│   │   ├── rag_engine.py   # RAG引擎
│   │   ├── search_engine.py # 搜索引擎
│   │   └── vector_store.py # 向量存储
│   ├── models/             # 数据模型
│   │   └── document.py     # 文档模型
│   ├── services/           # 服务层
│   │   ├── elasticsearch_service.py # ES服务
│   │   ├── embedding_service.py # 嵌入服务
│   │   ├── llm_service.py  # 大模型服务
│   │   ├── ocr_service.py  # OCR服务
│   │   ├── pdf_service.py  # PDF处理
│   │   ├── text_extractor.py # 文本提取
│   │   └── word_service.py # Word处理
│   ├── static/             # 静态文件
│   ├── templates/          # HTML模板
│   └── streamlit_app.py    # Streamlit前端
├── data/                   # 数据存储
│   ├── documents/          # 原始文档
│   ├── processed/          # 处理后的文档
│   ├── vectors/            # 向量存储
│   └── embedding_cache/    # 嵌入缓存
├── docker/                 # Docker配置
│   ├── docker-compose.yml  # 服务编排
│   ├── Dockerfile          # API服务镜像
│   └── Dockerfile.streamlit # 前端服务镜像
├── notebooks/              # Jupyter笔记本
├── tests/                  # 测试代码
├── .env.example            # 环境变量示例
├── .gitignore              # Git忽略文件
├── main.py                 # API应用入口
├── requirements.txt        # 依赖项
├── README.md               # 项目说明
└── start.sh                # 启动脚本

安装与部署

前置条件

  • Docker 和 Docker Compose
  • 至少4GB内存(推荐8GB以上)
  • 足够的磁盘空间(至少10GB)

快速部署

  1. 克隆仓库:

    git clone https://github.com/yourusername/knowledge_hub.git
    cd knowledge_hub
  2. 配置环境变量:

    cp .env.example .env
    # 编辑.env文件设置您的配置,特别是API密钥
  3. 使用启动脚本部署:

    chmod +x start.sh
    ./start.sh start
  4. 访问应用:

手动部署

  1. 创建必要的目录:

    mkdir -p data/documents data/processed data/vectors data/embedding_cache
  2. 构建并启动服务:

    docker-compose -f docker/docker-compose.yml build
    docker-compose -f docker/docker-compose.yml up -d
  3. 查看服务状态:

    docker-compose -f docker/docker-compose.yml ps

本地开发环境

  1. 创建虚拟环境:

    python -m venv venv
    source venv/bin/activate  # 在Windows上使用: venv\Scripts\activate
  2. 安装依赖:

    pip install -r requirements.txt
  3. 运行API服务:

    uvicorn main:app --reload
  4. 运行Streamlit前端:

    streamlit run app/streamlit_app.py

使用指南

文档管理

  1. 在Streamlit界面的"文档管理"页面上传文档
  2. 支持的文档格式: PDF, Word (.doc, .docx), 文本文件 (.txt, .md)
  3. 上传后,系统会自动提取文本、分块并索引

搜索

  1. 在"搜索"页面输入关键词或问题
  2. 选择搜索类型:
    • 关键词搜索: 基于文本匹配
    • 语义搜索: 基于向量相似度
    • 混合搜索: 结合关键词和语义搜索
  3. 选择搜索目标:
    • 文档: 搜索整个文档
    • 文档块: 搜索文档的特定部分

智能问答

  1. 在"问答"页面输入问题
  2. 系统会基于知识库内容生成回答
  3. 回答会包含引用来源,可以展开查看详情

系统管理

  1. 在"系统管理"页面查看系统状态
  2. 可以执行以下操作:
    • 重建索引: 重新创建Elasticsearch索引
    • 清除缓存: 清除嵌入缓存

管理命令

使用启动脚本管理系统:

./start.sh [命令]

可用命令:

  • start: 启动所有服务
  • stop: 停止所有服务
  • restart: 重启所有服务
  • status: 显示服务状态
  • logs: 显示所有服务的日志
  • logs <服务>: 显示指定服务的日志
  • build: 构建服务
  • help: 显示帮助信息

配置说明

主要配置项在.env文件中:

  • LLM_API_KEY: Mistral AI API密钥
  • OCR_API_KEY: OCR服务API密钥
  • ELASTICSEARCH_HOSTS: Elasticsearch主机地址
  • VECTOR_DB_HOST: 向量数据库主机地址

开发指南

  • 遵循PEP 8编码规范
  • 使用依赖注入模式设计服务
  • 为新功能编写测试
  • 使用分支开发新功能

许可证

MIT

About

知识管理与检索系统,基于大模型和向量数据库构建的智能文档管理和问答平台。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published