首页 > 其他分享 >Danswer 快速指南:不到15分钟打造您的企业级开源知识问答系统

Danswer 快速指南:不到15分钟打造您的企业级开源知识问答系统

时间:2023-11-29 10:25:54浏览次数:55  
标签:15 模型 Danswer 企业级 开源 文档 连接器 danswer

Kevin Kevin 公众号「技术狂潮AI」深耕互联网行业十余载,热衷AI技术研究  

一、写在前面

至于为什么需要做企业知识库,知识问答检索系统,以及现有GPT模型在企业应用中存在哪些劣势,今天在这里就不再赘述了,前面介绍其他构建知识库案例的文章中基本上都有讲过,如果您有兴趣可以去翻翻历史文章来了解。

今天就直接进入主题,介绍一款还不错的开源项目 Danswer,相较于其他开源的产品来说,从 Danswer 的设计上来来看确实存在一定的优势和可以参考的地方,其中最值得一提的还属 Connectors 连接器。目前官方已经提供了 12 中内置的连接器,连接器可以很方便的将任何你需要加入知识检索和问答的文档资料添加到向量数据库中进行索引。

二、Danswer 基本介绍

Danswer 允许您针对内部文档提出自然语言问题,并获得由源材料中的引用和参考文献支持的可靠答案,以便您始终可以信任您得到的结果。您可以连接到许多常用工具,例如 Slack、GitHub、Confluence 等。

动图封面  

2.1、Danswer 有哪些优势 ?

  • 它是完全开源的(MIT 许可证)并且免费使用,完全可以本地部署,数据隐私安全。
  • 允许您即插即用不同的 LLM 模型,例如 GPT、HuggingFace、GPT4All、Llama cpp,甚至自定义自托管模型
  • 具有开箱即用的关键功能,如文档访问控制、前端 UI、管理仪表板、轮询文档更新和灵活的部署选项。
  •  Slack、GitHub、GoogleDrive 等12种其他工具的连接器的不错列表。
  • 直接提问,无需打开任何文档即可解答您的问题,由GPT-4(或您选择的自托管模型)提供支持的答案,每个答案均附有引文和参考资料,因此您始终可以相信您得到的答复。
  • Danswer 使用最新的大语言模型来查找最相关的文档。
  • 自定义深度学习模型根据用户意图优化搜索。智能文本分块甚至可以防止细则丢失。

默认设置下,Danswer 使用 OpenAI 的 GPT 系列模型,你也可以根据需要在Danswer中使用开源模型,比如最近很火的Llama 2模型。

三、Danswer 实现原理

Danswer 是开源 NLP 和生成人工智能的最新技术的结合,Danswer 在执行用户查询请求到反馈结果的流程和原理如下:

1)、当用户提交查询时,首先通过用户意图模型进行处理,该模型确定是使用关键字搜索还是语义搜索。该模型是使用DistilBert检查点微调而成,使用由GPT提示生成的数据集,并手动过滤掉不良示例。

2)、语义搜索流程分为两个步骤:检索和重新排序。

  • 检索是通过使用双编码器模型对文本进行嵌入来完成的。向量存储在Qdrant向量数据库中,然后在查询时通过以相同方式投影用户查询来获取。在进行检索时会执行一些操作包括:上下文感知分块文档,包括跨块的重叠,并在不同尺度上多次嵌入块。一次使用512个标记进行更大的上下文,然后使用128个标记进行更精细的细节。
  • 对于重新排序,使用了一组不同的模型作为集合。通过组合在不同数据集上表现更好的多个模型,可以获得最佳的重新排序结果,甚至可以使用较小的模型,从而使步骤整体更快。

3)、最后,最相关的文档部分被传递给生成模型,该模型被提示也提供其答案的引用。然后将引用与源文档匹配,并将其与答案一起呈现给用户。

四、Danswer 快速部署

Danswer 提供了 Docker 容器,可以轻松部署在任何云上,无论是在单个实例上还是通过 Kubernetes。在本演示中,我们将使用 Docker Compose 在本地运行 Danswer。

  • 首先拉取代码:
git clone https://github.com/danswer-ai/danswer.git
  • 接下来导航到部署目录:
cd danswer/deployment/docker_compose
  • [可选] 默认的 Danswer 模型是 GPT-3.5-Turbo,因此如果您想使用它,则无需进行任何更改。

如果想使用开源的如Llama 2 模型API,可以通过创建 .env 文件来覆盖一些默认值,将 Danswer 配置为使用新的 Llama 2 端点:

INTERNAL_MODEL_VERSION=request-completion  # 将Danswer设置为使用requests而不是客户端库与LLM进行接口交互
GEN_AI_HOST_TYPE=colab-demo  # 将请求的头/主体设置为模型端点所期望的格式
GEN_AI_ENDPOINT=<REPLACE-WITH-YOUR-NGROK-PUBLIC-URL>/generate  # 设置模型端点URL
  • 启动Danswer(使用docker版本≥= 1.13.0):
docker compose -f docker-compose.dev.yml -p danswer-stack up -d --pull always --force-recreate
  • 完成后,Danswer 将在http://localhost:3000上可用访问。

有关 Danswer 的更多文档,请访问https://docs.danswer.dev/quickstart

五、Danswer 应用实践

5.1、添加文档到 Danswer

Danswer 提供了12种 Connectors 连接器用于将 Danswer 连接到你的数据源,以便答案基于你组织的知识来回答,如果目前内置的所有连接器不满足你的要求,也可以给官方提需求,或者自己基于开源代码来实现。将不同的数据源连接到 Danswer 是通过管理页面完成的,在右上角点击[Admin Panel]菜单即可进行设置。

关于每个 Connectors 连接器具体的配置使用可以在官网文档中找到详细的介绍。

这里我们添加一个Web连接器数据源来演示,只需要将一个公开可访问的网址URL加入到Web连接器即可,Danswer会爬去该文档的内容来存储到向量数据库中。

5.2、从 Danswer 获取答案

添加完数据源之后,我们就可以单击 Danswer 图标返回主页,现在就可以直接输入你文档相关的问题来索引了。

六、结束语

Danswer 是一款优秀的开源企业知识问答系统,通过使用连接器,可以方便地将各种文档资料添加到向量数据库中进行索引。它允许用户针对内部文档提出自然语言问题,并获得可靠、有参考价值的答案。Danswer 的优势包括完全开源、免费使用、数据隐私安全以及支持即插即用不同的 LLM 模型。它还可以与许多常用工具(如 Slack、GitHub、Confluence 等)无缝连接,为企业提供高效且可靠的知识检索和问答解决方案。

七、References

标签:15,模型,Danswer,企业级,开源,文档,连接器,danswer
From: https://www.cnblogs.com/lhxsoft/p/17863914.html

相关文章

  • Educational Codeforces Round 158 (Rated for Div. 2)
    A.LineTripThereisaroad,whichcanberepresentedasanumberline.Youarelocatedinthepoint\(0\)ofthenumberline,andyouwanttotravelfromthepoint\(0\)tothepoint\(x\),andbacktothepoint\(0\).Youtravelbycar,whichs......
  • P1955 [NOI2015] 程序自动分析
    P1955[NOI2015]程序自动分析基本思路考虑到了不等号的不可传递性,所以决定只开相等的并查集。然后突发奇想,觉得可以在找父亲的过程中判断是不是冲突。然而这样就不能路径压缩,显然超时。并且,根本没看清楚数据范围,实际上这题的数很大,裸开数组会爆炸。这是一开始的代码#inclu......
  • 一行代码——计算PI后15,000位
    先上代码a[52514],b,c=52514,d,e,f=1e4,g,h;main(){for(;b=c-=14;h=printf("%04d",e+d/f))for(e=d%=f;g=--b*2;d/=g)d=d*b+f*(h?a[b]:f/5),a[b]=d%--g;}运行的时候可能会有警告,像这样。但是不用管,直接运行就行了注意,一定要用\(C\)语言,不能用\(C++\)语言然后是优化版#inc......
  • 如何正确的在AIX 7上正确开启大页内存(large page)on oracle 11.2.0.4 rac 转发 https:
    1、关于大页有个客户的业务系统上要开启大页,提高系统性能,研究了一下,网上文章太多,自己做了一些测试,经过实机测试,整理了一下操作记录。关于AIX上为什么要开启大页,借用MOS里的说明原文:StartingwiththeAIXV5.1operatingsystemwhenrunningonIBMPOWER4orPOWER5proces......
  • Vue3 + ant-design-vue@3.2.15 + UploadPictureCard
    <template><a-uploadname="file"v-model:file-list="showFileList"list-type="picture-card":multiple="multiple":max-count="maxCount":before-up......
  • 【题解】CF1550E Stringforces
    标签:DP\(B^+\)阅读须知:本题解较为详细地讲述的该题解法的思路和来龙去脉,但篇幅较长,请耐心阅读。Step1从题面获取信息我们考虑,因为最大值最小,所以我们首先想到二分答案。然后我们又看到\(k\leq17\)这个限制,所以会想到可能是关于一个\(2^k\)之类的复杂度。以上就是我......
  • CF1599H Hidden Fortress
    看到很多是用二分的解法,这题其实可以这用**$4$**次查询得到结果。我们只需要用两次查询就可以找到地方基地矩阵的一条边的中点。先询问$d1=query(1,1)$和$d2=query(1,10^9)$。就可以求出$y_m=\frac{1+10^9+d1-d2}{2}$。之后再询问$d3=query(10^9,1)$和$d4=query(1,y_......
  • SP1557 GSS2 - Can you answer these queries II 题解
    SP1557GSS2-CanyouanswerthesequeriesII更好的阅读体验扫描线。把询问挂在右端点上,扫描右端点,纵轴仍为序列维。对于这种出现多次的数只算一次的,记\(pre_i\)表示\(i\)这个值上一次的出现位置,套路化的可以强制让出现多次的在\(pre_i<l\wedgei\)统计,用二维线段树状......
  • [ABC315Ex] Typical Convolution Problem
    题目链接首先观察到这个形式,容易发现它和常规的卷积不同点就在于:题目给出的求和定义中,\(\sum\)符号下面的式子是\(i+j<N\)求和而不是\(i+j=N\)。为了方便计算,我们引入:\[G_n=\sum_{i+j<N}F_iF_j\]我们发现,假设所有\(F_{1\sim{i-1}}\)已经求解完毕了,那么我们就可以通过之......
  • 从 15000 家参赛企业脱颖而出,涛思数据荣获中国创新创业大赛“优秀企业”
    近年来,以大数据、人工智能、物联网、新型显示、高性能集成电路、5G通信、云计算等为代表的创新技术加速突破应用,在传统行业的数字化转型进程中发挥着重要作用,催生出一系列新产品、新技术、新业态,形成了强劲的数字经济发展新动能。在此背景下,2023第十二届中国创新创业大赛新一代信......