# 企业知识智能助手 **Repository Path**: fairyTrace/Enterprise-Knowledge-Assistant ## Basic Information - **Project Name**: 企业知识智能助手 - **Description**: 一个基于RAG的智能企业知识问答系统 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-22 - **Last Updated**: 2025-12-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业知识智能助手 #### 📋 项目概述 项目名称:Enterprise Knowledge Assistant (EKA) - 企业知识智能助手 技术栈: 后端:Spring Boot 3.x, Spring AI, Spring Data JPA 前端: Vue3, Vite, ElementPlus, Tailwindcss 向量数据库:milvus 大模型:Ollama本地模型 存储:postgresql+ 本地文件存储 其他:pdf-document-reader, tika-document-reader #### ▣▦▣ 功能模块 1. 问答中心: - 支持用户输入问题,获取答案 - 支持用户根据文档名称查询并介绍文档内容 - 支持问题输入,根据问题向milvus数据库中搜索相关内容,构建提示词,调用ollama模型获取答案 2. 文档管理: - 支持用户上传文档到系统,系统会自动提取文档内容,进行文本分割和向量化存储到milvus数据库中 - 支持用户查询已上传的文档列表 - 支持用户删除已上传的文档,系统会同时删除milvus数据库中相关的向量数据 - 支持用户根据文档名称进行问题问答 3. 问答历史: - 支持用户查询自己的问答历史记录 - 支持用户根据问题内容进行搜索 - 支持用户查看问题的详细信息,包括问题内容、答案、文档名称等 - 支持用户重新提问已有的问题,系统会根据历史记录构建新的提示词 - 支持用户删除已有的问答记录 4. 用户认证: - 支持用户注册和登录系统 - 支持用户修改信息 5. 系统设置: - 支持用户设置系统参数,例如主题、布局等 #### 🏗️ 系统架构设计 前端界面 → Spring Boot后端 → [处理流程] → 返回答案 ↓ 文件上传 → 文本提取 → 文本分割 → 向量化存储 ↓ 问题输入 → 向量搜索 → 提示词构建 → 大模型调用 #### 🟫(📜+🔧) 安装教程 1. 需要先安装好ollama,并且启动好ollama服务,确保可以正常访问ollama的api接口 2. 安装好milvus,并且启动好milvus服务,确保可以正常访问milvus数据库 3. 安装好postgresql,并且启动好postgresql服务,确保可以正常访问postgresql数据库 4. 克隆本项目到本地 5. 进入项目目录,执行以下命令编译项目 ``` mvn clean install ``` 6. 执行以下命令启动项目 ``` java -jar target/fairy-eka-rag-0.0.1-SNAPSHOT.jar ``` 7. 进入```fairy-eka-rag-ui```前端目录,执行以下命令 ``` npm install ``` 8. 执行以下命令启动前端项目 ``` npm run dev ``` 9. 打开浏览器,访问```http://localhost:3000```,输入用户名和密码即可访问企业知识智能助手前端界面(其中认证服务(```auth```)默认使用的是```http://auth.yslzz.top```,已经部署好的,认证服务项目地址是:```https://gitee.com/integration-project/fairy-core-parent/tree/main/fairy-core-security```) #### 🖥️ 基础设施安装 1. docker安装ollama模型 ```yaml services: ollama: image: ollama/ollama container_name: ollama ports: - "11434:11434" volumes: - ./ollama:/root/.ollama restart: unless-stopped #healthcheck: #test: ["CMD", "curl", "-f", "http://localhosti:11434"] #interval: 10s #timeout: 5s #retries: 3 open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui environment: ROOT_PATH: "/" # 或 "/" 根据需求调整 OLLAMA_BASE_URL: "http://ollama:11434" ports: - "3020:8080" volumes: - ./open-webui:/app/backend/data restart: always depends_on: - ollama ``` 2. docker安装milvus模型 ```yaml services: etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.5 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd healthcheck: test: ["CMD", "etcdctl", "endpoint", "health"] interval: 30s timeout: 20s retries: 3 minio: container_name: milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin ports: - "9001:9001" - "9000:9000" volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data command: minio server /minio_data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.4.0 command: ["milvus", "run", "standalone"] security_opt: - seccomp:unconfined environment: ETCD_ENDPOINTS: etcd:2379 ``` 3. docker安装postgresql ```yaml services: postgres: image: postgres:15 container_name: postgres_db environment: POSTGRES_DB: postgres POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres_yslzz POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C" ports: - 15432:5432 volumes: - ./postgres_data:/var/lib/postgresql/data - ./init-scripts:/docker-entrypoint-initdb.d restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 30s timeout: 10s retries: 3 ``` #### 📘(💡)使用说明 1. 默认用户名和密码是```Eric Williams```和```s4ReFu@[$```