当前位置: 首页 > news >正文

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

相关文章:

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

语析 - 基于大模型的知识库与知识图谱问答平台 GitHub 地址&#xff1a;https://github.com/xerrors/Yuxi-Know &#x1f4dd; 项目概述 语析是一个强大的问答平台&#xff0c;结合了大模型 RAG 知识库与知识图谱技术&#xff0c;基于 Llamaindex VueJS FastAPI Neo4j 构…...

Linux《基础开发工具(上)》

在之前的篇章当中我们已经了解了Linux当中基本的指令以及相关的知识&#xff0c;那么接下来在本篇当中就开始学基本的开发工具&#xff0c;在此我们一共要了解6大开发工具&#xff0c;在此将这些工具的学习分为上中下篇&#xff0c;在本篇当中我们首先要来学习的是yun以及vim,一…...

【考试大纲】初级信息系统运行管理员考试大纲

目录 引言一、考试要求1、 考试说明2、 考试要求3、 本考试设置的科目包括:二、考试范围考试科目1:信息系统基础知识(初级)考试科目2:信息系统运行管理(应用技术)引言 最新的信息系统运行管理员考试大纲出版于 2018 年 9 月,本考试大纲基于此版本整理。 一、考试要求…...

《每天搞懂一道Hard》之数独终结者(LeetCode 37)

&#x1f4cc;《每天搞懂一道Hard》之数独终结者&#xff08;LeetCode 37&#xff09; &#x1f517;原题链接&#xff1a;https://leetcode.com/problems/sudoku-solver/ 今天我们来解剖一个经典回溯算法问题——数独求解器&#xff01;这道题在算法面试中出现频率高达35%&a…...

LangChain原理解析及开发实战指南(2025年最新版)

一、LangChain核心架构解析 1.1 框架设计理念 LangChain是基于提示工程(Prompt Engineering)构建的LLM应用开发框架&#xff0c;其核心思想是通过模块化组件实现大语言模型与业务系统的无缝对接。该框架采用分层设计&#xff1a; 接口层&#xff1a;统一对接OpenAI、DeepSee…...

YoloV8改进策略:Block改进|CBlock,Transformer式的卷积结构|即插即用

摘要 论文标题: SparseViT: Nonsemantics-Centered, Parameter-Efficient Image Manipulation Localization through Spare-Coding Transformer 论文链接: https://arxiv.org/pdf/2412.14598 官方GitHub: https://github.com/scu-zjz/SparseViT 这段代码出自SparseViT ,代码如…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_open_file

ngx_open_file 定义在src/os/unix/ngx_files.h #define ngx_open_file(name, mode, create, access) \open((const char *) name, mode|create, access)#define NGX_FILE_RDONLY O_RDONLY #define NGX_FILE_WRONLY O_WRONLY #de…...

测试金蝶云的OpenAPI

如何使用Postman测试K3Cloud的OpenAPI 1. 引言 在本篇博客中&#xff0c;我将带你逐步了解如何使用Postman测试和使用K3Cloud的OpenAPI。内容包括下载所需的SDK文件、配置文件、API调用及测试等步骤。让我们开始吧&#xff01; 2. 下载所需的SDK文件 2.1 获取SDK 首先&…...

C语言408考研先行课第一课:数据类型

由于408要考数据结构……会有算法题…… 所以&#xff0c;需要C语言来进行一个预备…… 因为大一贪玩&#xff0c;C语言根本没学进去……谁能想到考研还用得到呢&#xff1f;【手动doge&#xff08;bushi&#xff09; 软件用的是Clion&#xff0c;可以自行搜索教程下载使用。…...

11天 -- Redis 中跳表的实现原理是什么?Redis 的 hash 是什么?Redis Zset 的实现原理是什么?

Redis 中跳表的实现原理是什么&#xff1f; Redis 中的跳表&#xff08;Skip List&#xff09;是一种基于有序链表的高效数据结构&#xff0c;通过在链表上增加多级索引来提高数据的查找效率。以下是 Redis 中跳表的实现原理&#xff1a; 1. 基本概念 节点结构&#xff1a;跳…...

单细胞分析(19)—— 单细胞转录组基因集评分方法

下面是每种基因集评分方法的原理介绍代码示例&#xff0c;适用于R语言和Python两种主流生信分析环境。可以直接应用于单细胞转录组&#xff08;scRNA-seq&#xff09;数据分析中。 &#x1f52c; 单细胞转录组基因集评分方法&#xff08;附代码示例&#xff09; 在单细胞RNA测…...

010 rocketmq批量消息

文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能&#xff0c;但有⼀定的限制&#xff1a; topic 相同 waitStoreMsgOK 相同 &#xff08;⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…...

JavaWeb后端基础(3)

原打算把Mysql操作数据库的一些知识写进去&#xff0c;但是感觉没必要&#xff0c;要是现在会的都是简单的增删改查&#xff0c;所以&#xff0c;这一篇&#xff0c;我直接从java操作数据库开始写&#xff0c;所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…...

Oracle数据库基础入门(三): DQL 深入解析与实践

在 Oracle 数据库的知识体系中&#xff0c;数据查询语言&#xff08;DQL&#xff09;无疑是最为常用且关键的部分之一。对于 Java 全栈开发者而言&#xff0c;熟练掌握 DQL 不仅能高效地从数据库中获取所需数据&#xff0c;更是构建强大后端应用的基石。通过 DQL&#xff0c;我…...

P9231 [蓝桥杯 2023 省 A] 平方差

P9231 [蓝桥杯 2023 省 A] 平方差 - 洛谷 题目描述 给定 L,R&#xff0c;问 L≤x≤R 中有多少个数 x 满足存在整数 y,z 使得 xy2−z2。 输入格式 输入一行包含两个整数 L,R&#xff0c;用一个空格分隔。 输出格式 输出一行包含一个整数满足题目给定条件的 x 的数量。 输…...

贪心算法 求解思路

贪心算法简介 贪心算法是通过做一系列的选择来给出某一问题的最优解。对算法中的每一个决策点&#xff0c;做一个当时&#xff08;看起来是&#xff09;最佳的选择。这种启发式策略并不是总能产生出最优解&#xff0c;但它常常能给出最优解。 在实际设计贪心算法时&#xff0…...

2025/2/25,字节跳动后端开发一面面经

一、双方简单自我介绍 面试官先自我介绍,之后属于面试官看简历过程,基本不听。 二、实习中遇到最难的事情,怎么解决的 主要问的还是实习中做过的项目,项目难点在哪里(自己参与的地方),面对困难是怎么思考,怎么实际操作解决的。 三、项目实现细节 掌握自己项目的实…...

Buildroot 添加自定义模块-内置文件到文件系统

目录 概述实现步骤1. 创建包目录和文件结构2. 配置 Config.in3. 定义 cp_bin_files.mk4. 添加源文件install.shmy.conf 5. 配置与编译 概述 Buildroot 是一个高度可定制和模块化的嵌入式 Linux 构建系统&#xff0c;适用于从简单到复杂的各种嵌入式项目. buildroot的源码中bui…...

SpringBoot新闻推荐系统设计与实现

随着信息时代的快速发展&#xff0c;新闻推荐系统成为用户获取个性化内容的重要工具。本文将介绍一个幽络源的基于SpringBoot开发的新闻推荐系统&#xff0c;该系统功能全面&#xff0c;操作简便&#xff0c;能够满足管理员和用户的多种需求。 管理员模块 管理员模块为系统管…...

领域驱动设计:事件溯源架构简介

概述 事件溯源架构通常由3种应用设计模式组成,分别是:事件驱动(Event Driven),事件溯源(Event Source)、CQRS(读写分离)。这三种应用设计模式常见于领域驱动设计(DDD)中,但它们本身是一种应用设计的思想,不仅仅局限于DDD,每一种模式都可以单独拿出来使用。 E…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...