# 基于自然语言处理的咨询平台知识库系统 **Repository Path**: watt1010/knowledge ## Basic Information - **Project Name**: 基于自然语言处理的咨询平台知识库系统 - **Description**: 基于自然语言处理的知识库系统、咨询、问答库 qq群:366526312 - **Primary Language**: Java - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 30 - **Forks**: 19 - **Created**: 2019-01-21 - **Last Updated**: 2025-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 重要更新,重要更新,重要更新!!! 目前由于大模型的兴起,本群的开源代码已经不再合适,如果想做自己专属知识库的问答,还能使用到大模型的能力,建议使用langchain的retriver或者chain或者rag,或者agent等等。效果都要好于传统的检索模型 下面我将给一个基于langchain的RAG的过程,以供参考llm包下rag.py 这个是一个python程序,基于langchain框架实现,实现方式有很多可以用tools和agent等方式实现。仅供参考 # 咨询知识库系统概要 感谢HanLp、Luncene等开源系统给我们开发系统带来的便捷,也诚挚的邀请各位大神参与完善这个项目来供更多的人学习使用 ## 安装部署 ### 语料数据准备(HanLp模型文件、词向量文件): 请添加QQ群(366526312)然后从群文件中获取最新的模型文件 ``` data.zip ``` 将文件解压放到系统目录中 ### 数据库初始化 数据库采用mysql进行静态的数据存储,该文件在项目根目录中 ``` init.sql ``` ### 项目构建工具 项目采用maven的项目管理工具管理,并且采用的Spring cloud、SpringBoot微服务框架开发。此处建议使用idea工具进行编辑开发。 ### 配置说明 #### 修改HanLp配置(knowledge-core/src/main/resources/hanlp.properties): 项目中只需要配置这个root就可以了,root参数是HanLp分词数据包的物理路径 例如:模型文件data.zip解压到了D盘,则配置为 D:/ ``` properties root=D:/ ``` 我个人的喜好原因放到了项目目录中:D:/IdeaProjects/knowledge-platform/knowledge-core/src/main/ #### Lucene、词向量项目配置说明: application-*.yml (如果不知道dev、local、pre、pro、test是干嘛的怎么打包生效的,请自行学习maven相关知识) 配置的内容请参考hanlp的root配置,模型文件data.zip解压到了D盘,则配置为 D:/data ``` yaml lucene: root: D:/data/lucene/ #Lucene索引位置的根目录,模型文件中不包含这个路径,此路径是运行时生成的 indexKey: questionWithSynonyms #这个是Lucene查询、建立索引的时候共享的一个key,这个key可以一直不改变 vectorPath: D:/data/wiki_chinese_word2vec.bin #词向量物理路径 ``` #### mysql数据库配置 ```yaml spring: #mysql #dataSource configuration datasource: name: springboots #应用服务器内网地址 # url: jdbc:mysql://172.16.0.44:3306/chargerlink_mammoth?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull #本地测试,修改本地地址也指向测试服务器 url: jdbc:mysql://IP:3306/testk?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull username: username # 请修改 password: pwd # 请修改 ``` ### 项目编译 执行maven命令,如果不懂maven的童鞋,请恶补一下基础知识,哈哈 ``` mvn clean install -DskipTest -P 本地环境 ``` 由于我是本地运行的个人没有服务器,所以我打包的是 - 本地环境 ### 启动应用 (运行的时候请严格按照maven打包编译的方式运行,否则容易出问题) springboot项目启动只需要启动编译好的编译包就可以了,不懂springboot、spring cloud的童鞋要使劲学习啦。 #### 1.启动注册中心应用:knowledge-register maven打包完成后会在项目中创建出target文件夹,在target文件夹中找到 knowledge-core.jar通过命令行运行如下命令 ``` java -jar knowledge-register.jar ``` #### 2.注册中心启动后启:knowledge-core 启动步骤同上面的knowledge-core一直,但是如果不想使用spring-cloud功能的同学,可以不用启动注册中心应用,如果不启动注册中心应用,knowledge-core会报错(报错的内容意思是无法连接注册中心),但是可以不予理会可以正常运行 ### 创建索引库 通过浏览器访问创建索引的接口: ``` http://localhost:8771/createIndex ``` ### 测试结果 浏览器访问 ``` http://localhost:8771/getAnswer?question=您好 ``` ## 技术列表 ``` 词向量word2vec spring全家桶 mysql mybstis-plus 基于余弦相似度的语义相似度计算 ```