Bootstrap

工业级 RAG 实现 - QAnything

1. QAnything简介

QAnything 官方文档
QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。
您的任何格式的本地文件都可以往里扔,即可获得准确、快速、靠谱的问答体验。
特点

数据安全,支持全程拔网线安装使用。
支持文件类型多,解析成功率高,支持跨语种问答,中英文问答随意切换,无所谓文件是什么语种。
支持海量数据问答,两阶段向量排序,解决了大规模数据检索退化的问题,数据越多,效果越好,不限制上传文件数量,检索速度快。
硬件友好,默认在纯CPU环境下运行,且win,mac,linux多端支持,除docker外无依赖项。
易用性,无需繁琐的配置,一键安装部署,开箱即用,各依赖组件(pdf解析,ocr,embed,rerank等)完全独立,支持自由替换。
支持类似Kimi的快速开始模式,无文件聊天模式,仅检索模式,自定义Bot模式。

2. QAnything 安装教程

2. 1 安装软件包

官方要求:

Python 3.10+ (建议使用aoaconda3来管理Python环境)
System
Linux: glibc 2.28+ and Cuda 12.0+ (如果使用GPU)
Windows: WSL with Ubuntu 20.04+ and GEFORCE EXPERIENCE 535.104+ (如果使用GPU)
MacOS: M1/M2/M3 Mac with Xcode 15.0+
请创建一个干净的Python虚拟环境,以避免潜在冲突(推荐使用Anaconda3)。

我这里用Ubuntu 20.04.6做演示。

安装软件包,请运行:

conda create -n qanything-python python=3.10
conda activate qanything-python
git clone -b qanything-python https://github.com/netease-youdao/QAnything.git
cd QAnything
pip install -e .

2.2 运行QAnything框架

运行3B大模型(MiniChat-2-3B)要求显存>=10GB

bash scripts/run_for_3B_in_Linux_or_WSL.sh

在这里插入图片描述第一次运行可能还会让你安装一些模型。

2.3 访问前端页面

在浏览器中打开http://0.0.0.0:8777/qanything/

或者打开http://{主机ip地址}:8777/qanything/

即可使用UI界面

注意末尾的斜杠不可省略,否则会出现404错误

最好使用Edge浏览器
在这里插入图片描述

3. QAnything 简单使用

3.1 创建知识库

给知识库起个名字, 例如TestBase, 然后点击“新建”
在这里插入图片描述
点击上传文件:
在这里插入图片描述
这里我给大家提供个demo的数据文件demo_v1.txt

[
    {
        "output": "年9月到明年8月底,租期一年。",
        "input": "你好。我昨晚刚租了房子,签了房屋租赁合同,付一押一,合同签的是今年9.?"
    },
    {
        "output": "是的,无期之前的年数算作有期刑的一部分。",
        "input": "你好,判无期之前住了4年,转有期之后,无期之前的年数在有期之内吗?"
    },
    {
        "output": "发生交通事故应该去事故发生地的基层人民法院起诉。",
        "input": "发生交通事故应该去哪个法院起诉?"
    },
    {
        "output": "请您提供更具体的情况,无法回答。同时,强烈建议您立即向当地公安机关报案,以维护自己的合法权益。",
        "input": "我遇到一个流氓无赖,起先加了好友,聊天以后有好感,就见面了,?"
    },
    {
        "output": "抱歉,问题描述不够完整,无法提供准确的法律建议。请提供更多详细信息或咨询专业律师。",
        "input": "四个人喝酒回来后甲方非得出去玩,另一个人也要去于是喊上乙方,可是在半路?"
    },
    {
        "output": "如果您需要法律帮助,请咨询当地的法律专业人士。他们可以为您提供更具体和详细的意见和建议。",
        "input": "九月七日接到中审判决,孩子由女方抚养,八日把孩子接回来,判决男方由五月份开始给抚养费?"
    },
    {
        "output": "需要补充完整问题才能为您提供准确答案。请提供更详细的背景和情况说明。",
        "input": "青羊XX公司承包工程给XX队,本人在XX队任出碴工,从2012年2015年9月伤?"
    },
    {
        "output": "无法确定是否构成犯罪,需要根据具体情况判断。建议联系律师咨询相关法律问题。",
        "input": "2018年9月14号晚上11点05分被撞,当时就报警了交警是12点多才到的他构成犯罪了吗??"
    },
    {
        "output": "违法。以自己信用卡的方式来偿还债务并不应被视为一种合法的偿还方式。在此情况下,债权人可以寻求法律反对债务人。",
        "input": "别人欠我货款,她给了自己信用卡,并告知密码,刷了2笔,但欠我货款未清违法吗??"
    },
    {
        "output": "需要进一步了解伤残程度和对日常生活的影响才能确定是否可以鉴定为残疾。建议您咨询医生或相关的残疾评估机构进行评估。",
        "input": "我右手无名指,小拇指末节开放性骨折,打了钢针,现在术后恢复以后,请问这种情况能鉴定残疾吗??"
    },
    {
        "output": "律师收费标准因地区、案件性质、难易程度而不同,无法一概而论。建议先咨询当地律师事务所,了解具体情况后再决定是否委托代理、费用等问题。",
        "input": "你好,我要打小孩的抚养官司,大概请律师打官司要多少钱?"
    },
    {
        "output": "一般情况下,六个月后提起的离婚案件在开庭后的几周到几个月内会出具判决结果。具体时间还需根据案件的复杂程度、当地法院工作效率等因素来决定。",
        "input": "六个月后起诉离婚开完庭多长时间出判决结果??"
    },
    {
        "output": "对于这种具体病例,需要看具体情况,没有足够的信息回答这个问题。如果产妇或其家属认为医院或医生有过错,可以寻求法律帮助进行维权。",
        "input": "产妇自怀孕到生产整个孕期检查都在同一家医院,早上8点收住院,做了一系列检查经过几天抢救??"
    },
    {
        "output": "男方不能擅自处理女方的财物,无论是扔掉或者捐赠都是不合法的行为。解决办法是向法院申请强制执行,强迫女方搬走。同时,法院也可以决定是否需要给予女方适当的搬迁期限。",
        "input": "离婚后一个多月了,女方东西没有搬走,男方提醒女方多次了,男方把东西拿扔掉了可以吗??"
    },
    {
        "output": "很抱歉,根据提供的信息无法进行法医鉴定。请提供更详细的情况描述和相关证据,或者咨询专业的法律机构以获取有效帮助。",
        "input": "一下,我2016年6月26日晚上8点多左右,我在马路边买东西法医鉴定是值到什么伤??"
    },
    {
        "output": "很抱歉,根据助手的处理能力,以上问题缺少明确的法律问题和具体的背景信息。建议您提供更具体的问题和相关背景信息,以便得到更精准和准确的回答。",
        "input": "我与人一九九四年合伙作生意发生经济纠纷,对方于九八年和二零零一年两次起诉法院缺席判决对方胜诉?"
    },
    {
        "output": "您的问题不够清晰,无法准确回答。请提供更多详细信息,例如您的爷爷是否已婚,二婚对象是否同意与您爷爷在农村住房居住,拆迁政策等信息。",
        "input": "你好,我的爷爷现在准备二婚,农村住房,户主是我的爷爷,现在快要拆迁了,?"
    },
    {
        "output": "如果酒店提出取消订单,需要先看合同中关于取消订单的条款。如果合同中没有明确约定,可以协商要求酒店赔偿定金及可能的其他损失。如果双方无法协商解决,可以联系相关消费者组织或律师寻求法律援助。",
        "input": "预定19年5月18婚宴,交完了定金,酒店后来提出装修要取消订单,怎么索要赔偿?"
    },
    {
        "output": "如果您没有户口,则需要先去当地公安部门办理户口。一旦拥有户口后,您可以按照相关政策和规定申请分配安置房。如果开发商或相关部门拒绝给您分配安置房,您可以寻求相关法律援助或咨询专业律师。",
        "input": "生活了一辈子村子,被开发了,分安置房,没有户口不给分。怎么办?"
    },
    {
        "output": "可以起诉孩子爸爸的抚养责任。家事法庭会根据情况,决定是否给予孩子爸爸抚养权和相应的抚养费。建议您咨询专业律师。",
        "input": "你好,我孩子才八岁,孩子爸爸不管孩子,他抛弃妻弃子,可以起诉他吗?"
    },
    {
        "output": "您需要前往老人常住所在地的户口所在地派出所办理注销户口手续。需要提供老人的死亡证明等相关材料。如果您不清楚老人的户口所在地,可以联系相应的村委会或社区进行查询。",
        "input": "老人多年前去世,但因为老人不是本地户口,所以去世后没有去当地派出所注销户口请问我应该如何办理才好呢??"
    },
    {
        "output": "判决书的下来时间因司法程序不同而异,一般需要等待一定的时间。建议您咨询当地的法律机构或律师事务所,以获得更具体的指导和帮助。",
        "input": "孩子出生三天,因感情不和,分开了,孩子他们不给我母乳喂养,我起诉了男方判决书多久会下来??"
    },
    {
        "output": "很有可能是诈骗,请立即停止与该担保公司的联系并报警。在网上借款时,一定要选择正规可信的平台,并仔细阅读相关的合同和条款,不要轻易相信任何要求支付费用或保证金的要求。",
        "input": "我是外地人什么都没有 ,在网上贷款  担保公司要300元包装费,然后发传真签合同  我签了   现在又要资金验证  百分之十 就是5000  我是被骗了吗??"
    },
    {
        "output": "根据提供的信息,可以推断医生在进行骨折复位时可能出现了接歪的情况,导致伤口愈合不良,病情一直未能好转。建议立即就医,寻求专业医生帮助进行治疗。",
        "input": "医生吧骨头接歪了,100多天还是不能怎么动,是歪的?"
    },
    {
        "output": "根据相关法律规定,未满14岁的人不得驾驶机动车辆,骑行电动车也属于机动车范畴。因此,未成年捏了电动车的刹车,可以认定为违法行为。同时,成年骑电动车的人也应当承担相应的民事责任。",
        "input": "一14岁未成年骑自行车与一成年骑电动车相撞,T形路,未成年拐弯,未成年捏了刹车的电动车属于机动车吗??"
    },
    {
        "output": "您可以联系律师或法律机构,寻求法律咨询或提起诉讼要求对方履行合同,并追偿拖欠的40%预付款及可能产生的违约金等费用。同时,建议与对方协商解决,如果可行的话,可以考虑达成和解协议。",
        "input": "产品需求方在十日以内 \n没有按合同要求支付合同中要求的40%预付款\n我?"
    },
    {
        "output": "建议您与您的雇主或人力资源部门联系,了解您之前是否有投保工伤险或其他险种。同时,您如果在工作期间受到了伤害,可以向您的雇主申请工伤赔偿。如果您需要更多法律帮助,可以咨询当地的劳动法律师。",
        "input": "我在原来的厂子上班不知道都给入什么险了  不干了以?"
    },
    {
        "output": "您可以先联系当地公安机关报案,提供相关证据和细节信息。同时,您也可以向网络平台举报该诈骗行为,以帮助其他网友避免受骗。如果损失较大,您可以考虑寻求法律援助,并向当地法院提起民事诉讼。",
        "input": "你好,我遭遇网络诈骗,怎样报案才好呢??"
    },
    {
        "output": "判决结果应该根据具体情况而定,例如涉及到双方是否存在故意或过失行为、受伤程度、是否存在前科等因素。但是在一般情况下,对于轻伤案件,法官可能会考虑双方和解、给予适当的罚款或是治安处罚等处理方式。",
        "input": "长辈和年轻人发生了矛盾,都是轻伤,会怎么判?"
    },
    {
        "output": "如果你男朋友被关进派出所24小时还没有放出来,那么可能已经被刑事拘留了。你可以尝试联系相关部门(比如公安局)进行询问,但警察不一定会透露信息给你。建议你的男朋友尽快联系律师进行法律援助。",
        "input": "你好,我男朋友被关进派出所24小时没放出来是不是拘留了去问警察不告诉我?"
    },
    {
        "output": "牙齿被打折算是轻伤或者轻微伤,根据伤情程度会有不同的赔偿标准。具体赔偿标准需要根据事发地区的相关法律规定来确定,建议咨询当地律师或相关法律机构获取更详细的信息。",
        "input": "你好,牙齿被打折2颗算什么伤害?"
    },
    {
        "output": "根据中国劳动法规定,女性在怀孕期间因身体不适需要请假的话,可以视情况由医生开具病假条,并且拥有相应的休息时间,直至身体恢复为止。具体休假期限根据疾病种类和程度而定,并应当符合医学上的要求。",
        "input": "你好,请问怀孕期间身体不舒服,请病假劳动法有具体期限吗?"
    },
    {
        "output": "很抱歉,无法回答上述问题。需要提供更具体的情况和背景信息,才能给出较为准确的法律建议。建议您咨询当地律师或相关机构获得帮助。",
        "input": "理财产品  提现两天到账 现在提现要匹配几个月提不出来?"
    },
    {
        "output": "律师收费标准一般是根据服务内容、服务时间和律师资历等因素综合确定的,不同律师事务所的收费标准也有所不同。建议咨询当地的律师事务所,根据具体案情进行询问和了解,以确定具体的收费标准。",
        "input": "你好 咨询下离婚几年后对方起诉 \n我这边请律师收费标准是怎样呢?"
    },
    {
        "output": "如果你不熟悉A,不确定他们的行为是否合法,或者担心会损失财产,最好不要参与他们的活动。如果你确实需要贷款,应该去正规的金融机构或者银行借贷。如果你看到了任何犯罪行为,应该及时向当地公安机关报案。",
        "input": "我伙计蛋蛋介绍我认识他A给我认识,说他们给别人跑贷款,需要经费。我给他们说?"
    },
    {
        "output": "您可以向劳动监察部门举报并申请劳动仲裁,要求老板支付欠下的工资。同时,您可以联合其他工人通过法律途径向老板追讨欠薪。如果老板已经跑路,您可以通过法院起诉老板并申请强制执行,要求其归还欠下的工资。",
        "input": "我们厂老板,可能跑路了,还欠了工人十月份的工资,不知道能不能要得到??"
    },
    {
        "output": "根据《中华人民共和国兵役法》和《中华人民共和国士兵条例》,士兵护理假的假期为八周,给予工资待遇,最多可以累计使用两次。但是并没有规定必须在出生当年休。具体的护理假安排需要根据士兵的个人情况进行调整。",
        "input": "军人护理假必须要出生当年休吗??"
    },
    {
        "output": "如果您已经离开了并且拥有证据证明您的生命受到威胁,并且已经报警察方介入调查的话,您可以在任何时间起诉离婚。您可以咨询当地的律师来了解相关法律程序及细节。",
        "input": "我老公对我有生命威胁,殴打我,虐待我,警察让我出去躲几年,我已经离开了那多久才能离婚啊??"
    },
    {
        "output": "如果头婚已经离婚并且有结婚证明,那么需要提供离婚证明作为重新注册婚姻的凭证。 如果头婚是在没有结婚证明的情况下离婚的,需要通过其他方式证明头婚已经结束。",
        "input": "离过二次婚。如果在想登记结婚,还需要头婚的离婚证吗。?"
    },
    {
        "output": "可能是因为暂住证办理的人数增多,导致办理的时间变长。另外也可能是因为政策、流程等方面的调整,导致办理时间变慢。建议向当地派出所或出入境管理部门咨询具体情况。",
        "input": "暂住证今年年初那会办立马就办下来了,为啥11月办理被告知半年以后才能办下来?"
    },
    {
        "output": "协议书签字并不等同于离婚证的办理,所以仅签署离婚协议书并不能算作已经离婚。要完成离婚手续,还需要在民政局办理离婚证。建议您尽快办理离婚证,以便正式完成离婚手续。",
        "input": "你好!我想咨询一下我们离婚协议书签字了没有办离婚证!属于离婚了吗??"
    },
    {
        "output": "如果您购买了车损险,且台风期间车辆被杂物划伤漆面,可以向保险公司提出索赔申请。但具体赔偿金额及所需材料还应根据具体保险条款确定。建议您查看您的车险合同,并及时与保险公司联系申请赔偿。",
        "input": "车辆在台风期间被杂物划到漆面保险赔吗??"
    },
    {
        "output": "您可以先联系房东或物业管理部门,要求修理。如果无果,您可以向当地住房保障部门或消费者协会投诉。如果还不能解决,您可以向法院提起诉讼,要求房东赔偿损失并解除租约。在提起诉讼前,建议咨询专业律师,了解具体的法律程序和要求。",
        "input": "楼上水管裂漏水不修,还租房。咋起诉??"
    },
    {
        "output": "是的,当您的银行卡丢失或被盗时,您需要立即向银行报失并去当地派出所报案。派出所会出具一份报案证明,以便您到银行办理补卡手续。如果您不清楚卡丢失的具体位置,可以到离您最近的派出所报案。",
        "input": "我卡丢了,补办卡需要一份报案证明,我也报警了,警察说需要去我发现卡丢失的地方所在派出所报警他们这样做对吗??"
    },
    {
        "output": "需要根据双方的证言、现场勘查等调查材料来确定责任归属。如果双方都有错,可能会进行比例责任担责。建议双方协商解决,如无法协商,可以向当地交通管理部门或仲裁部门寻求咨询和帮助。",
        "input": "在村里道路上,我开车正常行驶有个人骑自行车太快拐弯为了躲避我的车辆,不小心磕到了怎么鉴定谁的责任??"
    },
    {
        "output": "如果同学打倒您的女儿是有意伤害的,可以向学校提出申诉要求对打人者进行处理;如果女儿需要治疗,可以要求打人者赔偿医药费;同时建议加强女儿自我保护意识,遇到类似情况及时向老师或家长求助。",
        "input": "请问我女儿在学校被同学打倒脚的部位冰骨错位了,现在医好了怎么陪尝?"
    },
    {
        "output": "如果营业执照是因为过期或者被撤销而注销的,那么可以办理新的营业执照。但如果是因为违法行为而被吊销的,需要先解决相关问题后才能再次申请办理新的营业执照。具体情况还需咨询当地工商行政管理部门。",
        "input": "上周注销的营业执照,现在可以办新的营业执照吗?"
    },
    {
        "output": "如果男方不同意离婚,你可以向法院提起离婚诉讼。在审理过程中,法院会根据实际情况判断是否符合离婚的条件。如果符合条件,法院会作出离婚判决。如果男方仍然拒绝离婚,可以向法院申请强制执行离婚判决。",
        "input": "我只想离婚什么都不要就离婚就好,男方不离婚?"
    },
    {
        "output": "这可能是因为劳务局还在处理您的投诉并确认了您是否有权获得赔偿或补偿。劳务局可能需要一些时间进行调查和处理,从而确认应该支付的金额并把钱打给您。建议您继续联系劳务局并查询处理进度,以确保您的权益得到保护。",
        "input": "我向劳务局的人投诉,已经100多天了第一次打电话给劳务局的人他们说钱打到他们那里你说这是什么情况??"
    },
    {
        "output": "如果之前的中介没有签署任何协议或合同,则他没有权利向您索要任何费用。如果他继续来公司闹事,建议您咨询律师或报警处理。如果之前的中介签署了合同,并且其中有相关的违约条款,则需要根据合同约定进行处理。",
        "input": "租办公室找的中介,他服务态度不好我们就换了一个中介租了同一套房子,现在来公司闹事要钱?"
    },
    {
        "output": "您需要说明您目前所遇到的问题是什么,以及您希望得到什么样的帮助。同时,建议您尽快联系信用卡发卡银行,与其沟通还款事宜,并根据您的财务状况制定合理的还款计划,避免出现逾期等问题。如有法律问题,建议您咨询专业律师或相关机构。",
        "input": "我xx信用卡本金一万多,从2016年一月开始到现在都是断断续续的还过,?"
    },
    {
        "output": "根据《中华人民共和国刑法》第274条规定,敲诈勒索罪是指故意使用威胁手段或者其他方法,非法占有他人财物的行为。如果被告被认定故意使用威胁手段或者其他方法,从被害人处非法获取或者索取财物,并已经实现占有行为,则可以认定该罪成立。",
        "input": "被告为敲诈勒索罪。请问此罪如何成立??"
    },
    {
        "output": "法庭不会通过短信通知,通常是通过邮件或者律师传达法庭判决或者传票。如果你本金已经还清,可以向法庭提出申请,要求返还利息,或者通过律师解决。同时,应该避免接触高利贷业务,并了解相关法律法规,以免再次受到损失。",
        "input": "法庭会通过短信通知吗,我不小心碰了高利贷,但是公司被查封了,我本金还完了我该怎么办??"
    },
    {
        "output": "这份合同可能存在问题,因为甲乙双方使用了同一个人A作为合同对象,无法清晰地确定A在合同中的角色和责任。此外,如果A是甲方的代表人或员工,则合同可能存在潜在的法律问题。建议双方重新协商并明确合同中所有人物角色和责任。",
        "input": "甲乙双方有同一个人A,就是甲方是A,乙方是A和B,这份合同有效吗?"
    },
    {
        "output": "不可以。离婚协议书只是夫妻双方协商的一种协议,需要到法院进行审批和认定,经过合法程序才能生效。在审批通过前,仍然视为夫妻关系存在。只有在法院最终裁定离婚后,夫妻关系才正式结束。",
        "input": "离婚协议书签好了,双方一方到民政局可以离婚吗??"
    },
    {
        "output": "如果您想离婚,但是对方不同意离婚,您可以向法院提出离婚诉讼。在审理过程中,法院会考虑双方的意见和情况,最终做出决定。在诉讼过程中,建议您咨询律师并提供尽可能多的证据来支持您的离婚申请。",
        "input": "我和他结婚九年,感情不和,我想离婚,但是他不同意离婚,需要怎么办?"
    },
    {
        "output": "如果您想离婚但是男方不肯给出结婚证和户口簿,您可以通过向法院提起诉讼的方式获得离婚。法院会根据实际情况采取相应的措施,如要求男方出示结婚证和户口簿。另外,您也可以咨询律师获取更专业的建议和帮助。",
        "input": "我的结婚证,和户口簿都被男方给藏了,可我就是想离婚,怎么办?"
    },
    {
        "output": "根据法律规定,夫妻共同申请的住房公积金账户属于夫妻共同财产,离婚后应当协议分割或由法院根据具体情况分割。您可以与前配偶协商分割方案,或向当地人民法院申请财产分割。",
        "input": "我04年办酒结婚。12年领结婚证现已离婚,住房公积金怎么分割。?"
    },
    {
        "output": "根据《道路交通安全法》等相关法律规定,吸毒、赌博等违法行为涉及道路交通安全的行为都属于严重违法行为,会被吊销驾驶证。具体情况需要根据处理措施和执行情况来确定,建议咨询当地公安交警部门或律师进行详细了解。",
        "input": "你好,吸赌被处理过的驾驶证会吊销吗??"
    },
    {
        "output": "如果线上平台存在非法集资行为,应该及时向公安机关报案,提供相关证据。对于线下平台总裁被拘留的情况,需要了解其拘留的原因和可能的法律后果,也可以考虑寻求法律援助寻求帮助。同时,对于自己的投资,应该保持警惕,谨慎对待非正规平台的投资行为。",
        "input": "想了解一下一个企业线上平台非法集资,但是线下平台的总裁被拘留了,这种情?"
    },
    {
        "output": "女方的行为不应该成为夫妻债务的分摊对象。夫妻应该共同承担家庭支出和债务,而不是将个人行为作为债务的分摊标准。但是,如果这种行为导致了一些其他问题,如夫妻关系的不和等问题,可以通过家庭法庭等对话解决。",
        "input": "妻子在网上与他人发生暧昧言语,如老婆等敏感词语,被发现后与其发生争执,她是否可以均分这些债务??"
    },
    {
        "output": "一般情况下,交了起诉书后,法院需要进行立案、审查、传票等一系列程序,具体时间视地区、案件性质等因素而异,一般需要数周至数月不等。如果您急需了解具体情况,建议前往当地法院询问或联系您的律师。",
        "input": "你好,交了起诉书要多久才开庭啊?"
    },
    {
        "output": "根据您提供的信息,合同规定了35日内支付40万首付款,如果超过这个期限没有支付,则可能会导致违约。您需要查看合同的具体条款,看是否有关于超过首付款期限的处罚措施或者是否需要赔偿房东等等。建议您尽快和中介或律师联系,以免出现不必要的法律问题。",
        "input": "我在中介签订了二手购房合同,证不够两年的那种按揭房。合同定于签订合同起35日内付给房东40万签的购房合同是否因超首付款期限而终至呢??"
    },
    {
        "output": "如果已经立案但却不给受理办案,建议您向案件所在地的司法机关投诉,并且可以寻求律师的帮助,通过法律途径维护自己的权益。同时,需提供足够的证据,如合同、凭证、交易记录等,以便证明涉案的清晰、明确,从而加快案件的处理和解决。",
        "input": "合同诈骗,已立案但是不给受理办案?"
    },
    {
        "output": "关于亲戚精神问题的情况,建议您咨询相关的医生或心理专家,获取专业的建议和治疗方案。\n\n关于货车司机是否酒驾的问题,您可以向当地交通运输部门或公安交警部门进行举报,他们会进行相应的调查和处理。同时,也建议您在车辆行驶过程中随时注意司机饮酒情况,并及时报警。",
        "input": "先生。我家有一位亲戚年龄70岁了,从小精神有问题还有我们想交警查一下货车司机有没有酒驾??"
    },
    {
        "output": "如果你们是合法的执法机构,依法行使职权,抓捕的人确实违反了法律,那么你们是没有罪的。但如果你们行使职权不当,滥用职权,或者犯了其他违法行为,那么你们就有可能会被追究刑事责任。建议在执行任务时,严格依照法律程序和规定进行,确保自身的合法行为。",
        "input": "你好……请问一下,我们这些帮派出所一起抓毒贩都有罪吗?"
    },
    {
        "output": "如果您确实被公司开除了,那么您可以在员工离职交接表上签字确认离职的事实,但请先仔细阅读该表格上的内容,确保您不会签署让自己承担不应承担的责任的条款或者放弃您的合法权利。如果您对该表格内容有任何疑问或者需要法律帮助,请咨询专业的律师。",
        "input": "今天到公司交接工作时,让我签员工离职交接表,是公司开除的,该签什么呢??"
    },
    {
        "output": "如果离婚协议书上明确写明了双方都同意不承担任何经济责任,那么他现在后悔也不可以追究你的经济责任。如果他不遵守协议,你可以向法院申请强制执行协议,并追究他的违约责任。如果你有任何疑问,建议咨询专业律师。",
        "input": "我离婚半年多了,离婚的时候协议书上写的什么都不要我承担,可他现在后悔了我可以告他吗??"
    },
    {
        "output": "您可以写一份声明证明此房产的所有权实际归您所有,但是因工作或其他原因,暂时需要将房产登记在姐姐的名下。声明中应包括您与姐姐的关系,您对房产的权利、收益等方面的表述,并请姐姐签署认可此声明。同时,建议您征得专业律师的意见,以确保此声明的法律效力。",
        "input": "我现在买房有特殊原因不能过自己的名字,过到我姐姐名字上了这个证明怎么写??"
    },
    {
        "output": "首先,业委会是业主自治的组织,具有重要的管理作用,在物业公司变更时应当得到通知和参与决策。如果业主委员会不知情,那么可能存在合法性问题。其次,如果新的物业公司未经合法程序进入小区,那么也可能存在合法性问题。建议您通过向相关部门进行咨询,了解具体情况并采取必要的法律措施。",
        "input": "我们小区是07年拿的安置房O8年成立业委会07年至12年的物业走了从12年至今年是另外一家物业进小区这家物业进小区我们全体业主都不知情业主委员会也不知情只有和开发商从15年签了合同这家物业公司进小区合法吗??"
    },
    {
        "output": "看伤口不能确定伤残评级和赔偿金额。伤残评级是需要在医院经过专业的体检和评估才能确定的,并且赔偿金额也需要根据具体的法律法规以及案例判决来确定。建议您咨询专业的律师或者保险公司进行进一步的了解和处理。",
        "input": "我想咨询一下看伤口能不能知道伤残评几级,赔偿多少。谢谢!?"
    },
    {
        "output": "如果您认为扣款是不合理的,建议您第一时间联系扣款方了解扣款原因并提供相关证明材料,寻求解决办法。如果无法和扣款方协商解决,您可以通过法律途径来维护自己的合法权益。建议您咨询一下当地的律师或者法律援助中心。",
        "input": "扣了我一千五百块钱我该怎么拿回来?"
    },
    {
        "output": "您可以要求中介提供房租支付记录、交租凭证等证明文件来证明中介未向房东支付房租。如果中介无法提供相应证明,您也可以联系相关房屋租赁监管机构或律师寻求帮助。同时建议您妥善保留好租房合同及与中介之间的沟通记录等证据,以备不时之需。",
        "input": "您,我与中介签订的合同十一月中旬到期,但目前房东要求我们搬出去如何证明中介未给房东房租??"
    },
    {
        "output": "如果没有能力还这笔债务,起诉可能并不会有用。建议先与债权人进行沟通,商量还款计划或者申请债务重组等解决方案。如果无法达成一致,可以咨询律师,探讨是否有其他可行的法律措施。同时,应该避免逃避债务,以免对个人信用造成更大的影响。",
        "input": "借三十万。两分利息 现在利还了22w目前没有能力还这个钱本钱还不了 起诉有用吗诉有用吗??"
    },
    {
        "output": "如果拖欠临时工工资已经超过规定的支付期限,雇主有违反劳动法律法规的嫌疑。您可以向劳动监察部门投诉举报,或者通过司法途径维护自己的合法权益,例如向法院提起劳动仲裁或者民事诉讼。建议您先尝试通过协商解决,如果无效再选择适当的途径维权。",
        "input": "\n    拖欠临时工工资一星期了,老是说出货结清搪?"
    },
    {
        "output": "离婚协议书可以由离婚双方自行协商拟定,也可以由律师代为起草。一般情况下,可以到当地律师事务所或法律援助中心等机构咨询,或者在网上查找相关模板进行填写。签署离婚协议书后,还需要进行司法机关的调解或审判程序,方可申请婚姻登记处办理离婚。",
        "input": "你好,离婚协议书哪里拿?是不是签了离婚协议书就可以到婚姻登记处办理离婚了??"
    },
    {
        "output": "根据《婚姻法》规定,夫妻在婚姻关系存续期间取得的财产,除非另有约定或者法律规定,应当认定为夫妻共同财产。因此,即使一方名下的房产证上只写着单独的名字,如果该房产是在婚姻关系存续期间购买的,也应视为夫妻共同财产。",
        "input": "婚后买房,房产证写一个人的名字,属于夫妻共同财产吗?"
    }
]

点击确认
在这里插入图片描述
可以看到,知识库就这样简单地创建好了
在这里插入图片描述

3.2 创建聊天机器人

点击“Bots”, 点击“创建Bot”
在这里插入图片描述
输入机器人名词,例如“MyFirstBot”,点击确认
在这里插入图片描述

3.3 关联知识库

点击添加关联知识库
在这里插入图片描述
把我们之前创建好的TestBase知识库添加上去。然后观点窗口。
在这里插入图片描述

3.4 测试

用我们之前的知识库问题提问,看看回答效果

拖欠临时工工资一星期了,老是说出货结清搪?

在这里插入图片描述
原来知识库回答:

如果拖欠临时工工资已经超过规定的支付期限,雇主有违反劳动法律法规的嫌疑。您可以向劳动监察部门投诉举报,或者通过司法途径维护自己的合法权益,例如向法院提起劳动仲裁或者民事诉讼。建议您先尝试通过协商解决,如果无效再选择适当的途径维权。

现在机器人回答:

您的拖欠临时工工资一星期了,老是说出货结清搪的问题属于劳动纠纷。根据参考信息,您可以向劳动监察部门举报并申请劳动仲裁,要求老板支付欠下的工资。同时,建议您联合其他工人通过法律途径向老板追讨欠薪。如果老板已经跑路,您可以通过法院起诉并申请强制执行,要求其归还欠下的工资。

可以看出机器人回复的内容会根据知识库的内容进行梳理并回复。

4. QAnything 的分析:

  • QAnything 使用 sanic 实现 web 服务 ,Local_RAG 使用 FastAPI 实现,FastAPI 更广泛
  • 向量检索模型 bce-embedding-base_v1 + 向量排序模型 bce-reranker-base_v1 组合
  • 业务数据库使用 MySQL,向量数据库使用 faiss

4. 1 QAnything 架构

在这里插入图片描述

4. 2 两阶段检索

知识库数据量大的场景下两阶段优势非常明显,如果只用一阶段embedding检索,随着数据量增大会出现检索退化的问题,如下图中绿线所示,二阶段rerank重排后能实现准确率稳定增长,即数据越多,效果越好。
在这里插入图片描述
QAnything使用的检索组件BCEmbedding有非常强悍的双语和跨语种能力,能消除语义检索里面的中英语言之间的差异,从而实现:

强大的双语和跨语种语义表征能力【基于MTEB的语义表征评测指标】。
基于LlamaIndex的RAG评测,表现SOTA【基于LlamaIndex的RAG评测指标】。

4. 2.1 一阶段检索(embedding)

在这里插入图片描述
更详细的评测结果详见Embedding模型指标汇总

4. 2.2 二阶段检索(rerank)

在这里插入图片描述
更详细的评测结果详见Reranker模型指标汇总

5. 理解源代码:

从 API 作为入口,跟着 RAG 原理,从本地文档检索开始,到向量检索,再到向量排序,最后到 RAG 结果
大家可以安装下面的目录找到对应的python文件进行理解。

# 1 文件上传
# QAnything-python\qanything_kernel\qanything_server\sanic_api.py
# app.add_route(upload_files, "/api/local_doc_qa/upload_files", methods=['POST'])  # tags=["上传文件"] 
# 鼠标右键,转到定义

# 2 pdf 处理
# QAnything-python\qanything_kernel\core\local_file.py
# elif self.file_path.lower().endswith(".pdf"):

# 3 加载PDF,如果需要 OCR 执行新的路线
# QAnything-python\qanything_kernel\utils\loader\pdf_loader.py
# def pdf_ocr_txt(filepath, dir_path="tmp_files"):

# 4 清理特殊字符
# QAnything-python\qanything_kernel\core\local_file.py
# texts_splitter = ChineseTextSplitter(pdf=True, sentence_size=sentence_size)

# 5 文件检索
# QAnything-python\qanything_kernel\core\local_doc_qa.py
# async def get_source_documents(self, query, kb_ids, cosine_thresh=None, top_k=None):

# 6 向量数据库搜索
# QAnything-python\qanything_kernel\connector\database\faiss\faiss_client.py
# docs_with_score = await self.faiss_client.asimilarity_search_with_score(query, k=top_k, filter=filter,
#                                                                                fetch_k=200)

## 7 检索结果重排
# QAnything-python\qanything_kernel\core\local_doc_qa.py
# def rerank_documents(self, query, source_documents):

在这里插入图片描述
在这里插入图片描述

;