接入QAnything的AI问答知识库,可私有化部署的企业级WIKI知识库

本文涉及的产品
视觉智能开放平台,视频资源包5000点
NLP自然语言处理_基础版,每接口每天50万次
视觉智能开放平台,分割抠图1万点
简介: zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具,提供在线化的知识库管理功能,专为私有化部署而设计,最大程度上保证企业或个人的数据安全,可以完全以内网的方式来部署使用它。您也可以将其作为企业产品的说明文档来使用,支持一键将整个空间的内容开放到互联网,提供有不同风格的开放文档页样式可供选择,以及适配了在手机端、小程序中文档的展示,省去为产品的说明文档而定制开发系统的成本。

zyplayer-doc是一款适合企业和个人使用的WIKI知识库管理工具,提供在线化的知识库管理功能,专为私有化部署而设计,最大程度上保证企业或个人的数据安全,可以完全以内网的方式来部署使用它。


您也可以将其作为企业产品的说明文档来使用,支持一键将整个空间的内容开放到互联网,提供有不同风格的开放文档页样式可供选择,以及适配了在手机端、小程序中文档的展示,省去为产品的说明文档而定制开发系统的成本。

安装知识库系统

1. 下载Java并安装

版本号:JAVA 1.8 及以上,本项目使用JAVA语言开发,启动时会依赖JAVA的运行时环境

2. 安装数据库依赖

私有化部署后应用产生的所有数据都存储在自己的MySQL数据库中,数据库安装成功后,需要手动创建一个库:create database zyplayer_doc;

3. 下载安装文件

到官网可下载最新版安装文件:https://doc.zyplayer.com/#/integrate/zyplayer-doc/install,同时也可使用Docker或宝塔进行安装

4. 修改配置并启动

修改文件夹下的 application.properties 里面的数据库链接和帐号密码,双击文件夹下的 startup.bat 启动项目,启动后访问:http://127.0.0.1:8083 ,默认账号:zyplayer 密码:123456

文档的编写

在知识库首页新建空间,进入空间即可新建文档进行编辑,也可以上传或新建Office文档进行在线协同编辑

image.png image.png

接入QAnything实现AI问答

服务的接入

可通过私有化部署的方式,或者使用QAnything云服务,将应用信息填入到系统中,并开启内部文档或开放问答的启用开关

QAnything 开源地址:https://github.com/netease-youdao/QAnything

QAnything 云服务地址:https://ai.youdao.com/console/#/service-singleton/qanything

image.png

在空间中启用

在空间的设置页中将 AI知识库同步 开关开启,等待同步完成后在空间的高级搜索和开放文档页面即会出现AI问答选项

image.png

image.png

在文集中启用

只需要将文集引用到的空间全部开启 AI知识库同步 ,文集搜索界面则会出现AI问答选项

image.png

AI问答限流

在AI问答配置处可配置问答限流,可按 用户或全系统 配置 每天/每小时/每分钟 的问答次数限制,防止恶意刷量。

image.png

API开放问答接口

可通过开放接口的方式实现指定空间或文集进行问答,可用于智能客服等场景使用

同步请求地址:http://127.0.0.1:8083/openApi/v1/ai/chats/sync ,请求代码示例:

public static void main(String[] args) {
    // 组装请求参数
    Map<String, Object> paramMap = new HashMap<>();
    paramMap.put("space", "uta2JteQtykCil4b0ePSMp");
    paramMap.put("question", "zyplayer-doc文档管理系统是什么?");
    paramMap.put("salt", UUID.randomUUID());
    // 加密参数
    String privateKey = "MIICeAIBAxxxxxxxxDMKVrlHqf";
    String content = JSON.toJSONString(paramMap);
    String sha256 = SecureUtil.sha256(content);
    RSA rsaPrivate = SecureUtil.rsa(privateKey, null);
    String encrypt = rsaPrivate.encryptHex(sha256, KeyType.PrivateKey);
    // 发送请求
    String url = "http://127.0.0.1:8083/openApi/v1/ai/chats/sync";
    String body = HttpUtil.createPost(url).form("content", content).form("encrypt", encrypt).execute().body();
    System.out.println(body);
}

流式请求地址:http://127.0.0.1:8083/openApi/v1/ai/chats/stream ,请求代码示例:

public static void main(String[] args) {
    CountDownLatch latch = new CountDownLatch(1);
    Map<String, Object> paramMap = new HashMap<>();
    paramMap.put("space", "uta2JteQtykCil4b0ePSMp");
    paramMap.put("question", "zyplayer-doc文档管理系统是什么?");
    paramMap.put("salt", UUID.randomUUID());
    // 加密参数
    String privateKey = "MIICeAIBAxxxxxxxxDMKVrlHqf";
    String content = JSON.toJSONString(paramMap);
    String sha256 = SecureUtil.sha256(content);
    RSA rsaPrivate = SecureUtil.rsa(privateKey, null);
    String encrypt = rsaPrivate.encryptHex(sha256, KeyType.PrivateKey);
    // 发送请求
    Map<String, Object> bodyMap = new HashMap<>();
    bodyMap.put("content", content);
    bodyMap.put("encrypt", encrypt);
    WebClient webClient = WebClient.create("http://127.0.0.1:8083");
    Flux<AiChatStreamResult> eventStream = webClient.post()
            .uri("/openApi/v1/ai/chats/stream")
            .bodyValue(bodyMap)
            .retrieve()
            .bodyToFlux(AiChatStreamResult.class);
    Disposable disposable = eventStream.timeout(Duration.ofSeconds(60)).subscribe(data -> {
        // 在这里处理每次获取到的数据
        if (Objects.equals(data.getName(), "response")) {
            logger.info("message: {}", data.getMessage());
        } else if (Objects.equals(data.getName(), "complete")) {
            logger.info("sourceList: {}", data.getSourceList());
        } else if (Objects.equals(data.getName(), "failed")) {
            logger.info("failed: {}", data.getErrMsg());
        }
    }, error -> {
        // 处理错误
        logger.error("ChatStream error", error);
        latch.countDown();
    }, () -> {
        // 处理流结束事件
        logger.info("ChatStream complete");
        latch.countDown();
    });
    try {
        // 最多等待60秒
        latch.await(60, TimeUnit.SECONDS);
    } catch (InterruptedException e) {
        logger.error("等待超时:{}", e.getMessage());
    }
    disposable.dispose();
}
相关文章
|
24天前
|
人工智能 物联网 开发者
Oumi:开源的AI模型一站式开发平台,涵盖训练、评估和部署模型的综合性平台
Oumi 是一个完全开源的 AI 平台,支持从 1000 万到 4050 亿参数的模型训练,涵盖文本和多模态模型,提供零样板代码开发体验。
228 43
Oumi:开源的AI模型一站式开发平台,涵盖训练、评估和部署模型的综合性平台
|
11天前
|
人工智能 自然语言处理 数据可视化
YAYI-Ultra:中国企业终于等来『全能大脑』!开源企业级AI『混合专家』横扫金融舆情中医领域,最长生成20万字报告
YAYI-Ultra 是由中科闻歌研发的企业级大语言模型,具备强大的多领域专业能力和多模态内容生成能力,支持数学、代码、金融等多个领域的专家组合,缓解垂直领域迁移中的“跷跷板”现象。
71 10
YAYI-Ultra:中国企业终于等来『全能大脑』!开源企业级AI『混合专家』横扫金融舆情中医领域,最长生成20万字报告
|
1月前
|
人工智能 搜索推荐 开发工具
24.7K Star!用 KHOJ 打造你的AI第二大脑,自动整合和更新多源知识,轻松构建个人知识库
KHOJ 是一款开源的个人化 AI 助手,支持多源知识整合、语义搜索、个性化图像生成等功能,帮助用户高效管理知识库。
391 23
24.7K Star!用 KHOJ 打造你的AI第二大脑,自动整合和更新多源知识,轻松构建个人知识库
|
20天前
|
存储 人工智能 弹性计算
NVIDIA NIM on ACK:优化生成式AI模型的部署与管理
本文结合NVIDIA NIM和阿里云容器服务,提出了基于ACK的完整服务化管理方案,用于优化生成式AI模型的部署和管理。
|
16天前
|
存储 人工智能 NoSQL
Airweave:快速集成应用数据打造AI知识库的开源平台,支持多源整合和自动同步数据
Airweave 是一个开源工具,能够将应用程序的数据同步到图数据库和向量数据库中,实现智能代理检索。它支持无代码集成、多租户支持和自动同步等功能。
87 14
|
19天前
|
人工智能 资源调度 API
AnythingLLM:34K Star!一键上传文件轻松打造个人知识库,构建只属于你的AI助手,附详细部署教程
AnythingLLM 是一个全栈应用程序,能够将文档、资源转换为上下文,支持多种大语言模型和向量数据库,提供智能聊天功能。
2806 14
|
8天前
|
数据采集 人工智能 安全
接入DeepSeek的云盒子AI知识库,欢迎内测!
云盒子AI智能知识库以其开放性和灵活性著称,目前正内测接入DeepSeek-R1。此次升级延续了云盒子的开放理念,为企业提供灵活选择,支持按需定制和自由适配。DeepSeek的加入拓展了知识库的能力边界,满足不同行业需求,提升了文档利用与知识获取的智能化水平。云盒子通过专利数据采集技术、深度解析、权限隔离和持续学习能力,确保高效、安全的知识管理。适用于单文档问答、企业内部知识管理、客户服务支持、教育与培训及医疗单位等多种场景,为用户带来全新体验。
|
2天前
|
人工智能 自然语言处理 监控
AI尚处于早期阶段:仅有25%的企业部署了该技术,很少有企业获得回报
AI尚处于早期阶段:仅有25%的企业部署了该技术,很少有企业获得回报
|
1月前
|
存储 人工智能 关系型数据库
AnalyticDB PostgreSQL版:Data+AI 时代的企业级数据仓库
AnalyticDB PostgreSQL版是面向Data+AI时代的企业级数据仓库,涵盖产品架构、核心技术、客户案例及功能发布四大部分。产品架构包括数据分析和AI/ML的存储与计算优化;核心技术涉及高性能实时引擎Beam、向量化执行引擎Laser及优化器Orca;客户案例展示了丝芙兰和领跑汽车的应用;新功能如pgsearch全文检索和In-Database AI/ML进一步提升了性能与易用性。
|
1月前
|
人工智能 弹性计算 JSON
AI大模型复习“搭子”—部署流程演示
本文主要介绍文档智能,介绍利用大模型构建知识库和AI学习助手的部署流程,主要包括以下几方面的内容: 1.什么是文档智能 2.文档智能 & RAG 3.基于文档智能和百炼平台的RAG应用案例