GitHub 语析 - 基于大模型的知识库与知识图谱问答平台

语析 - 基于大模型的知识库与知识图谱问答平台

GitHub 地址:https://github.com/xerrors/Yuxi-Know

📝 项目概述

语析是一个强大的问答平台,结合了大模型 RAG 知识库与知识图谱技术,基于 Llamaindex + VueJS + FastAPI + Neo4j 构建。

核心特点:

  • 🤖 多模型支持:适配 OpenAI、各大国内主流大模型平台,以及本地 vllm 部署
  • 📚 灵活知识库:支持 PDF、TXT、MD 等多种格式文档
  • 🕸️ 知识图谱集成:基于 Neo4j 的知识图谱问答能力
  • 🚀 简单配置:只需配置对应服务平台的 API_KEY 即可使用

在这里插入图片描述

📋 更新日志

  • 2025.02.24 - 新增网页检索以及内容展示,需配置 TAVILY_API_KEY,感谢 littlewwwhite
  • 2025.02.23 - SiliconFlow 的 Rerank 和 Embedding model 支持,现默认使用 SiliconFlow
  • 2025.02.20 - DeepSeek-R1 支持,需配置 DEEPSEEK_API_KEYSILICONFLOW_API_KEY
  • 2024.10.12 - 后端修改为 FastAPI,添加 Milvus-Standalone 独立部署

在这里插入图片描述

PC 网页小屏设备
在这里插入图片描述
在这里插入图片描述

环境配置

在启动前,您需要提供 API 服务商的 API_KEY,并放置在 src/.env 文件中。

默认使用硅基流动的服务,因此必须配置:

SILICONFLOW_API_KEY=sk-270ea********8bfa97.e3XOMd****Q1Sk

本项目的基础对话服务可在不含显卡的设备上运行,大模型使用在线服务商的接口。

启动服务

开发环境启动(源代码修改会自动更新):

docker compose -f docker/docker-compose.dev.yml --env-file src/.env up --build

添加 -d 参数可在后台运行

生产环境部署请使用:

docker compose -f docker/docker-compose.yml --env-file src/.env up --build -d

成功启动后,会看到以下容器:

[+] Running 7/7✔ Network docker_app-network       Created✔ Container graph-dev              Started✔ Container milvus-etcd-dev        Started✔ Container milvus-minio-dev       Started✔ Container milvus-standalone-dev  Started✔ Container api-dev                Started✔ Container web-dev                Started

访问 http://localhost:5173/ 即可使用系统。

服务管理

关闭服务

docker compose -f docker/docker-compose.dev.yml --env-file src/.env down

查看日志

docker logs <容器名称>  # 例如:docker logs api-dev

💻 模型支持

1. 对话模型

本项目支持通过 API 调用的模型,本地模型需使用 vllm、ollama 转成 API 服务后使用。

模型供应商默认模型配置项目
siliconflow (默认)Qwen/Qwen2.5-7B-Instruct (免费)SILICONFLOW_API_KEY
openaigpt-4oOPENAI_API_KEY
deepseekdeepseek-chatDEEPSEEK_API_KEY
arc(豆包方舟)doubao-1-5-pro-32k-250115ARK_API_KEY
zhipu(智谱清言)glm-4-flashZHIPUAI_API_KEY
dashscope(阿里)qwen-max-latestDASHSCOPE_API_KEY
qianfan(百度)ernie_speedQIANFAN_ACCESS_KEY, QIANFAN_SECRET_KEY
添加新模型供应商

如需添加供应商模型,了解 OpenAI 调用方法后,只需在 src/static/models.yaml 中添加对应配置:

ark:name: 豆包(Ark)url: https://console.volcengine.com/ark/region:ark+cn-beijing/model # 模型列表default: doubao-1-5-pro-32k-250115 # 默认模型base_url: https://ark.cn-beijing.volces.com/api/v3env:  # 需要配置的环境变量,仅限API key- ARK_API_KEYmodels:- doubao-1-5-pro-32k-250115- doubao-1-5-lite-32k-250115- deepseek-r1-250120
本地模型部署

支持添加以 OpenAI 兼容模式运行的本地模型,可在 Web 设置中直接添加(适用于 vllm 和 Ollama 等)。

[!注意]
使用 docker 运行此项目时,ollama 或 vllm 需监听 0.0.0.0

在这里插入图片描述

2. 向量模型与重排序模型

建议使用硅基流动部署的 bge-m3(免费且无需修改)。其他模型配置参考 src/static/models.yaml。

对于向量模型重排序模型,选择 local 前缀的模型会自动下载。如遇下载问题,请参考 HF-Mirror 配置。

要使用已下载的本地模型,可在网页设置中映射,或修改 saves/config/base.yaml。记得在 docker-compose 中映射相应的 volumes。

📚 知识库支持

本项目支持多种格式的知识库文件:

  • PDF
  • Txt
  • Markdown
  • Docx

文件上传后,系统会:

  1. 将文件转换为纯文本
  2. 使用向量模型将文本转换为向量
  3. 存储到向量数据库中

此过程可能需要一定时间,请耐心等待。

🕸️ 知识图谱支持

本项目使用 Neo4j 作为知识图谱存储。您需要将图谱整理成 jsonl 格式,每行格式为:

{"h": "北京", "t": "中国", "r": "首都"}

然后在网页的图谱管理中添加此文件。

[!说明]
现阶段项目使用的 OneKE 自动创建知识图谱效果不佳,已暂时移除,建议在项目外创建知识图谱

系统启动后会自动启动 neo4j 服务:

  • 访问地址:http://localhost:7474/
  • 默认账户:neo4j
  • 默认密码:0123456789

可在 docker/docker-compose.ymldocker/docker-compose.dev.yml 中修改配置(注意同时修改 api.environmentgraph.environment)。

目前项目暂不支持同时查询多个知识图谱。如已有基于 neo4j 的知识图谱,可删除 docker-compose.yml 中的 graph 配置项,并修改 api.environment 中的 NEO4J_URI 为您的 neo4j 服务地址。

❓ 常见问题

镜像下载问题

如无法直接下载相关镜像,可参考 DaoCloud/public-image-mirror,尝试替换前缀:

# 以 neo4j 为例,其余类似
docker pull m.daocloud.io/docker.io/library/neo4j:latest# 然后重命名镜像
docker tag m.daocloud.io/docker.io/library/neo4j:latest neo4j:latest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25744.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由浅入深系列——Distinctive Image Featuresfrom Scale-Invariant Keypoints(SIFT)

第一章&#xff1a;为什么我们需要"图像指纹"&#xff1f;——SIFT的诞生 想象一下&#xff0c;你带着一张埃菲尔铁塔的明信片来到巴黎。站在铁塔脚下&#xff0c;你举起明信片想拍张对比照——但无论怎么调整角度&#xff0c;手机APP就是识别不出两张图片的对应关系…

spring注解开发(Spring整合MyBatis——Mapper代理开发模式、(Spring、MyBatis、Jdbc)配置类)(6)

目录 一、纯MyBatis独立开发程序。 &#xff08;1&#xff09;数据库与数据表。 &#xff08;2&#xff09;实体类。 &#xff08;3&#xff09;dao层接口。&#xff08;Mapper代理模式、无SQL映射文件——注解配置映射关系&#xff09; &#xff08;4&#xff09;MyBatis核心配…

Redis缓存一致性难题:如何让数据库和缓存不“打架”?

标题&#xff1a;Redis缓存一致性难题&#xff1a;如何让数据库和缓存不“打架”&#xff1f;&#xff08;附程序员脱发指南&#xff09; 导言&#xff1a;当数据库和缓存成了“异地恋” 想象一下&#xff1a;你刚在美团下单了一份麻辣小龙虾&#xff0c;付款后刷新页面&#…

eMMC安全简介

1. 引言 术语“信息安全”涵盖多种不同的设计特性。一般而言&#xff0c; 信息安全是指通过实践防止信息遭受未经授权的访问、使用、披露、中断、篡改、检查、记录或销毁。 信息安全的三大核心目标为 机密性&#xff08;Confidentiality&#xff09;、完整性&#xff08;Integr…

如何用python画一棵分形树

这个代码会生成一个彩色的分形树图案&#xff0c;可以通过调整draw_tree函数中的参数来改变树的形状和大小 import turtle import random# 递归函数绘制分形树 def draw_tree(branch_len, t):if branch_len > 5:t.color(random.choice(colors))t.pensize(branch_len / 10)t…

linux中安装部署Jenkins,成功构建springboot项目详细教程

参考别人配置Jenkins的git地址为https&#xff0c;无法连上github拉取项目&#xff0c;所以本章节介绍通过配置SSH地址来连github拉取项目 目录&#xff1a; 1、springboot项目 1.1 创建名为springcloudproject的springboot项目工程 1.2 已将工程上传到github中&#xff0c;g…

sqli-lab

没了解sql注入的知识&#xff0c;本篇更像是复现 数据库层面 │ ├── 数据库1&#xff08;Database 1&#xff09; │ │ ├── 表1&#xff08;Table 1&#xff09; │ │ │ ├── 主键字段&#xff08;Primary Key&#xff09;&#xff1a;唯一标识表中的每…

线程间的通信

一、实现方式 各线程之间栈区独享、并且与进程共享文本段、数据段、堆区&#xff0c;所以可以通过全局变量实现多线程间通信。 int num 0; //创建一个全局变量void *thread1(void *arg) {while (1){num 100; …

Deepseek开源周第四天:从 DualPipe 到 EPLB

Deepseek开源周第四天&#xff1a;从 DualPipe 到 EPLB 前言 上周deepseek宣布&#xff0c;将在本周陆续发布五个开源项目&#xff0c;这些库已经在生产环境中经过了记录、部署和实战测试。 今天是deepseek开源周的第四天&#xff0c;deepseek发布了三个开源项目&#xff0c;…

字符函数和字符串函数1

1、字符分类函数 C语⾔中有⼀系列的函数是专⻔做字符分类的&#xff0c;也就是⼀个字符是属于什么类型的字符的。 这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h 在这里介绍一下islower函数&#xff0c;其他的非常相似。 函数原型&#xff1a; 1 int islower(int c); islo…

算法系列之排序算法-堆排序

在数据结构中&#xff0c;堆&#xff08;Heap&#xff09;是一种特殊的树形数据结构&#xff0c;通常用于实现优先队列。堆分为最大堆和最小堆两种类型。最大堆的每个节点的值都大于或等于其子节点的值&#xff0c;而最小堆的每个节点的值都小于或等于其子节点的值。Java 提供了…

Mercury、LLaDA 扩散大语言模型

LLaDA 参考&#xff1a; https://github.com/ML-GSAI/LLaDA https://ml-gsai.github.io/LLaDA-demo/ 在线demo&#xff1a; https://huggingface.co/spaces/multimodalart/LLaDA Mercury 在线demo&#xff1a; https://chat.inceptionlabs.ai/ 速度很快生成

YOLO - pose detect 输入输出接口与执行效率测试

0.参考资料&#xff1a; Pose - Ultralytics YOLO Docs 下面仅对这个模型的输入输出接口和效率做了判断&#xff0c;尚不涉及训练。 pose和segment 相对class detect是相对自然的扩展。object box内部的 subclass就是seg&#xff0c;object box 内部的point array 就是Pose。…

DeepSeek 开源狂欢周(一)FlashMLA:高效推理加速新时代

上周末&#xff0c;DeepSeek在X平台&#xff08;Twitter&#xff09;宣布将开启连续一周的开源&#xff0c;整个开源社区为之沸腾&#xff0c;全球AI爱好者纷纷为关注。没错&#xff0c;这是一场由DeepSeek引领的开源盛宴&#xff0c;推翻了传统推理加速的种种限制。这周一&…

MySQL数据库基本概念

目录 什么是数据库 从软件角度出发 从网络角度出发 MySQL数据库的client端和sever端进程 mysql的client端进程连接sever端进程 mysql配置文件 MySql存储引擎 MySQL的sql语句的分类 数据库 库的操作 创建数据库 不同校验规则对查询的数据的影响 不区分大小写 区…

【洛谷贪心算法】P1106删数问题

这道题可以使用贪心算法来解决&#xff0c;核心思路是尽量让高位的数字尽可能小。当我们逐步删除数字时&#xff0c;会优先删除高位中相对较大的数字。具体做法是从左到右遍历数字序列&#xff0c;当发现当前数字比它后面的数字大时&#xff0c;就删除当前数字&#xff0c;直到…

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

解决idea至少创建jdk17项目 问题 idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗?解决 问题 idea现在只能创建最少jdk17&#xff0c;不能创建java8了吗 我本来以为是 IDEA 版本更新导致的 Bug&#xff0c;开始还没在意。 直到我今天自己初始化项目时才发现&am…

MyBatis 操作数据库(详细入门详细)

本章⽬标 1. 使⽤MyBatis完成简单的增删改查操作, 参数传递. 2. 掌握MyBatis的两种写法: 注解 和 XML⽅式 3. 掌握MyBatis 相关的⽇志配置 铺垫 在应⽤分层学习时, 我们了解到web应⽤程序⼀般分为三层&#xff0c;即&#xff1a;Controller、Service、Dao . 之前的案例中…

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布

C# 基于.NET Framework框架WPF应用程序-MQTTNet库实现MQTT消息订阅发布 MQTT简述MQTTNet简述创建项目&#xff08;基于.NET Framework框架&#xff09;安装MQTTNet库项目源码运行效果 MQTT简述 mqtt官网 MQTTNet简述 MQTTnet MQTTnet 是一个强大的开源 MQTT 客户端库&#…

武汉大学生命科学学院与谱度众合(武汉)生命科技有限公司举行校企联培座谈会

2025年2月21日下午&#xff0c;武汉大学生命科学学院与谱度众合&#xff08;武汉&#xff09;生命科技有限公司&#xff08;以下简称“谱度众合”&#xff09;在学院学术厅举行校企联培专业学位研究生合作交流会。武汉大学生命科学学院副院长刘星教授、生命科学学院周宇教授、产…