CN117313859A - 基于LangChain和大语言模型的问答方法和系统 - Google Patents
基于LangChain和大语言模型的问答方法和系统 Download PDFInfo
- Publication number
- CN117313859A CN117313859A CN202311248327.6A CN202311248327A CN117313859A CN 117313859 A CN117313859 A CN 117313859A CN 202311248327 A CN202311248327 A CN 202311248327A CN 117313859 A CN117313859 A CN 117313859A
- Authority
- CN
- China
- Prior art keywords
- text
- question
- vector
- paragraph
- llm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 239000013598 vector Substances 0.000 claims abstract description 92
- 230000001133 acceleration Effects 0.000 claims abstract description 21
- 230000004927 fusion Effects 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013139 quantization Methods 0.000 claims description 5
- 238000003058 natural language processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 235000002198 Annona diversifolia Nutrition 0.000 description 1
- 241000282842 Lama glama Species 0.000 description 1
- 241000157593 Milvus Species 0.000 description 1
- 241000590419 Polygonia interrogationis Species 0.000 description 1
- RTAQQCXQSZGOHL-UHFFFAOYSA-N Titanium Chemical compound [Ti] RTAQQCXQSZGOHL-UHFFFAOYSA-N 0.000 description 1
- 241000282840 Vicugna vicugna Species 0.000 description 1
- 238000009411 base construction Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/041—Abduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及基于LangChain和大语言模型的问答方法和系统。该方法包括:基于加速推理框架来加载LLM;搭建文本向量知识库;对用户问题进行向量化以生成问题向量;使用两种不同的向量检索库对问题向量与文本向量知识库进行相似度匹配,返回两组相似文本段落;针对两组相似文本段落,进行两两段落相似度匹配,得到具有最高段落相似度得分的两个相似文本段落;当最高段落相似度得分高于或等于设定阈值时,对两个相似文本段落进行内容融合以生成最终知识段落,并基于最终知识段落生成上下文提示模板;当最高段落相似度得分低于设定阈值时,将用户问题作为上下文提示模板;将上下文提示模板输入至LLM中,进行并行推理并流式输出答案。
Description
技术领域
本申请总体上涉及数据处理领域,更具体地涉及一种基于LangChain框架和大语言模型的问答方法和系统。
背景技术
智能问答系统(Question Answering System,QA)是信息检索系统的一种高阶形式,其目的在于用使用简洁的自然语言准确地回答用户所提出的问题。与搜索引擎相比,问答系统能更好地理解用户问题的真实意图,从而能更有效地满足用户的需求,这些使得其在自然语言处理(Natural Language Processing,NLP)领域中的关注度与日俱增并且发展前景十分广泛。
问答系统的发展历程可以简单概括为:基于结构化数据的问答系统、基于自由文本的问答系统、基于问题答案对的问答系统三个阶段。基于结构化数据的问答系统主要是面向限定领域,系统处理的数据类型是简单且高度结构化的数据,系统一般将输入问题转化为数据库查询语句,通过数据库的检索返回答案。基于自由文本的问答系统的处理流程主要包括:问题分析、文档检索及段落划分、候选答案抽取、答案排序、答案验证等。基于问题答案对的问答系统主要涉及社区问答(community question answering,CQA)与常见问答(Frequently asked questions,FAQ)两种类型。
现有技术中提出了一种基于知识库的问答方法及系统。该问答方法包括:获取问题信息和问题信息对应的解决方案信息,并将问题信息和解决方案信息录入预设知识库;获取问题输入数据;对问题输入数据和预设知识库进行匹配,生成匹配结果;若匹配结果为匹配成功,生成与问题输入数据对应的答案反馈信息;若匹配结果为匹配失败,将问题输入数据上报至待完善问题列表。该方法需要将问题信息和其对应的解决方案信息录入预设的知识库中,会耗费大量的人力和时间,较为繁琐且开发成本较高。
另一方面,自ChatGPT问世以来,大语言模型(Large Language Model,LLM)展现出了惊人的能力,并以爆发式增长态势应用到NLP相关的各个领域中。大语言模型是指使用海量文本数据训练的深度学习模型,通常拥有较大量级的参数,如亿级,千亿级。现有的LLM主要采用Transformer模型架构和预训练目标即语言进行建模。与小语言模型的主要区别在于,LLM在很大程度上扩展了模型大小、预训练数据和总计算量(扩大倍数),LLM可以更好地理解自然语言,并根据给定的上下文(例如,提示prompt)生成高质量的文本。
由此,在相关领域中提出了基于大语言模型和LangChain框架的问答方法。LLM已经是一个在海量数据集中训练过的模型,故针对公共领域问题已经可以给出比较好的回答,如常识类、代码类、数学计算类等。而针对垂直领域,则需要用户根据需求对LLM进行微调训练,但微调模型会受到数据量、显卡资源等限制,往往表现的不好。LangChain框架是一个十分强大的框架,它旨在帮助开发人员使用语言模型构建端到端的应用程序,通过其提供的工具、组件和接口,可以将大语言模型和外部数据结合,并允许语言模型和运行环境进行交互,故使用LangChain结合知识库做垂直领域问答已成为当下比较令人感兴趣的智能问答系统构建方案。然而,目前的大多数方案只提出了基本的应用流程,对性能、准确度、行业应用等方面并没有深入研究介绍,如何将大语言模型和LangChain框架更好地应用在所需领域中还需进一步探索。
发明内容
鉴于以上所述的问题,本申请提供了一种基于LangChain框架和大语言模型的本地知识库问答方法和系统,且将其应用于机器人问答对话系统中,并针对如何在显卡资源有限的情况下更好地提升系统性能来对该问答方法和系统进行改进,以实现更为准确、更为高效的智能问答,同时更好地节约成本。
根据本申请的一方面,提供了一种基于LangChain框架和大语言模型LLM的问答方法,包括:基于LLM加速推理框架来加载所述LLM;搭建所述LangChain框架中的文本向量知识库;对用户问题进行向量化以生成问题向量;使用两种不同的向量检索库对所述问题向量与所述文本向量知识库进行向量相似度匹配,以返回两组相似文本段落;针对所述两组相似文本段落,进行两两段落文本相似度匹配,以得到具有最高段落相似度得分的两个相似文本段落;当所述最高段落相似度得分高于或等于段落相似度阈值时,对所述两个相似文本段落进行内容融合以生成与所述问题向量最相关的最终知识段落,并基于所述最终知识段落生成上下文提示模板;当所述最高段落相似度得分低于所述段落相似度阈值时,将所述用户问题作为所述上下文提示模板;并且将所述上下文提示模板输入至所述LLM中,以进行并行推理并且流式输出答案。
根据本申请的另一方面,提供了一种基于LangChain框架和大语言模型LLM的问答系统,包括:处理器,以及与所述处理器耦接的接口单元和存储单元,所述接口单元被配置为接收用户问题,所述存储单元被配置为存储所述LLM和计算机程序指令,其中,所述处理器被配置为执行所述计算机程序指令来:基于LLM加速推理框架来加载所述LLM;搭建所述LangChain框架中的文本向量知识库;对所述用户问题进行向量化以生成问题向量;使用两种不同的向量检索库对所述问题向量与所述文本向量知识库进行向量相似度匹配,以返回两组相似文本段落;针对所述两组相似文本段落,进行两两段落文本相似度匹配,以得到具有最高段落相似度得分的两个相似文本段落;当所述最高段落相似度得分高于或等于段落相似度阈值时,对所述两个相似文本段落进行内容融合以生成与所述问题向量最相关的最终知识段落,并基于所述最终知识段落生成上下文提示模板;当所述最高段落相似度得分低于所述段落相似度阈值时,将所述用户问题作为所述上下文提示模板;并且将所述上下文提示模板输入至所述LLM中,以进行并行推理并且经由所述接口单元流式输出答案。
根据本申请的又一方面,提供了一种存储有程序指令的机器可读存储介质,其中,所述程序指令在被处理器执行时使得所述处理器执行如上所述的基于LangChain框架和大语言模型LLM的问答方法。
附图说明
从下面结合附图对本申请的具体实施方式的描述中可以更好地理解本申请,其中:
图1示出了根据本申请的示例实施例的基于LangChain框架和大语言模型LLM的问答方法的流程图;
图2示出了根据本申请的示例实施例的搭建LangChain框架中的文本向量知识库的过程;
图3示出了根据本申请的另一示例实施例的基于LangChain框架和大语言模型LLM的问答方法的流程图;以及
图4示出了根据本申请的示例实施例的基于LangChain框架和大语言模型LLM的问答系统的示意性框图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本申请的全面理解。但是,对于本领域技术人员来说很明显的是,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请的更好的理解。本申请决不限于下面所提出的任何具体配置,而是在不脱离本申请的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本申请造成不必要的模糊。
考虑到上述背景技术中提到的现有解决方案的不足,本申请提出了一种新的基于LangChain框架和大语言模型的本地知识库问答方法和系统,且将其应用于机器人问答对话系统中,并针对如何在显卡资源有限的情况下更好地提升系统性能来对该问答方法和系统进行改进,以实现更为准确、更为高效的智能问答,同时更好地节约成本。
首先,本申请使用LangChain框架将当前先进的大语言模型技术应用到问答对话系统中,并在性能方面加以改进。根据本申请的实施例,基于LLM和LangChain技术,可免除传统问答系统中繁琐的问题及对应答案的录入工作,降低了知识库构建的复杂性,大大节省了人力和系统开发时间。并且,知识库文档的形式不再局限于文本,还支持图片和便携式文档格式(pdf)等格式,增加了知识库的多样性。另外,可以将所提出的问答系统接入机器人中,通过更换不同领域的知识库,就可以打造不同功能的机器人。例如,搭建法律知识库,即可获得法律服务机器人。此外,利用LLM,还可以实现人机闲聊,提升了人机交互的趣味性。
另外,在现有的基于LLM和LangChain框架的问答系统中,基本没有针对性能优化方面的提案,为了在显卡资源有限的情况下更好地基于LLM和LangChain框架来构建智能问答系统,在本申请的一些实施例中做了如下一个或多个方面的改进:
1、为防止单一的向量相似度匹配出现误差,进而造成回答错误的情况,使用两种不同的向量检索库(例如faiss和chroma)同时进行向量相似度匹配的操作,并分别返回两组相似文本段落。然后,针对两组相似文本段落,进行两两段落文本相似度匹配,取匹配分数大于阈值的两个相似段落进行内容融合,作为最终知识段落来返回,以提升知识参考的准确度。
2、由于LLM通常会耗费大量显存,除个别机构外,多数研究人员和机构都会受到显卡资源的限制,如何能在有限的显存资源下,尽可能多地提升问答数量是当下的研究热点。根据本申请的一些实施例,在基于LangChain框架匹配返回相似文本段落后,对返回的段落再次进行与问题的相似度匹配操作,返回最相似的句子,以减少提示模板prompt中的内容字数,从而降低LLM在推理时的显存大小,在有限的显存资源下,增加可并行的推理数量。同时,还可避免段落中无关句子对LLM模型产生错误诱导,导致最终回答出错的问题。
3、使用LLM加速推理框架进行LLM的转换和推理。加速推理框架可以使LLM的回答速度提升数十倍,极大地缩短了用户等待时间,提升用户体验度。
4、利用加速推理框架高效并行推理的优势,针对多用户并行推理进行了改善,设置的并行推理逻辑可在不增加显卡成本的情况下,尽可能缩短用户等待时间。
下面将结合附图1至图4来详细说明根据本申请的示例实施例的基于LangChain框架和大语言模型LLM的问答方法和系统。
图1示出了根据本申请的示例实施例的基于LangChain框架和大语言模型LLM的问答方法的流程图。如图1所示,该问答方法可以包括步骤110至190。关于这些步骤,将具体描述如下。
在步骤110中,基于LLM加速推理框架来加载LLM。
根据本申请的示例实施例,可以基于LLM加速推理框架来加载LLM模型,例如,FastLLM、vLLM等。加速推理框架使用创新的显存管理原理以及高效的推理机制,相比原Transformer框架,其推理速度可提升数十倍。例如,使用具有24G显存的显卡Nvidia TITANRTX来进行测试,使用原Transformer框架模型推理10个问题(不同时输入),需要花费近90s,而使用加速推理框架仅需花费35s,若使用加速推理框架中的batch操作同时输入10个问题进行推理,仅用时16s。
在步骤120中,搭建LangChain框架中的文本向量知识库。
图2示出了根据本申请的示例实施例的搭建LangChain框架中的文本向量知识库的过程。该过程可以包括:加载本地知识文档,并将该文档读取为文本;将该文本拆分为文本块;对文本块进行向量化,以生成文本块向量;将文本块向量存入存储库中,以生成文本向量知识库。
具体而言,需要准备问答系统所需领域的本地知识文档,该知识文档可以采用各种格式,例如文本、图片、便携式文档格式等(例如,pdf、markdown、txt、jpg等),然后,按文档的格式加载文档并读取为文本。接下来,将文本拆分为文本块。例如,可以根据LangChain框架中提供的文本切分方式,将文本按照字符、长度或语义进行拆分。在本申请的一些示例性实施例中,可以按照字符加长度的方式对文本进行拆分。然后,需要对文本块进行向量化。文本向量化的主要目的是将文本表示成一系列能够表达文本语义的向量,即用数值向量来表示文本的语义。在本申请的一些实施例中,可以使用text2vec、m3e等语言Embedding模型,对拆分后的文本块进行编码,得到文本块的向量表示。最后,将所有文本块向量存入存储库vector_store中,以完成本地文本向量知识库的搭建。
在步骤130中,对用户问题进行向量化以生成问题向量。例如,将用户输入的问题,同样使用text2vec、m3e等语言Embedding模型进行编码,生成问题向量query_vector。需要注意的是,问题向量化要和文本块向量化使用同样的量化方法,以保证在同一个空间进行比较。
在步骤140中,使用两种不同的向量检索库对问题向量与文本向量知识库进行向量相似度匹配,以返回两组相似文本段落。具体而言,将问题向量与存储库中的文本块向量进行相似度匹配,并按分数排序返回具有最高k个相似度得分的k个相似文本段落。这些段落可被认为是回答此问题最有用的知识,段落上下文字数可以用chunk_size来控制。相似度匹配操作可以使用milvus、chroma、faiss等向量检索库来进行。
根据本申请的示例实施例,使用两种不同的向量检索库(如faiss和chroma)同时进行向量相似度匹配的操作,并分别返回两组k个相似文本段落(例如,k值取5,chunk_size取250字)。
然后,在步骤150中,针对两组k个相似文本段落,再使用文本相似度算法,例如,余弦距离、Levenshtein距离等,对这两组相似文本段落进行两两段落文本相似度匹配,找出具有最高段落相似度得分的两个相似文本段落。
当最高段落相似度得分高于或等于段落相似度阈值时,在步骤160中,对两个相似文本段落进行内容融合(取交集)以生成与问题向量最相关的最终知识段落,并基于最终知识段落生成上下文提示模板。
当最高段落相似度得分低于段落相似度阈值时,则说明使用两种向量检索库得到的结果没有一段相似,相当于用户问题在文本向量知识库中没有匹配到相关文本段落。在这种情况下,可以在步骤170中,直接将用户问题作为上下文提示模板。
根据本申请的一些示例实施例,prompt模板可以例如具有以下形式:[已知信息:{context},根据上述已知信息来回答用户的问题,问题是:{question}]。可以将步骤160中所得到的最终知识段落中的句子作为已知信息,替换模板中的{context}部分,{question}部分则使用用户输入的问题进行替换。如果用户输入的问题在文本向量知识库中没有匹配到相关文本段落,则不再采用上述模板,而是直接将用户输入的问题作为prompt模板。prompt模板中的内容可根据需求作出调整,但需注意prompt中的内容越多,推理时越耗费显存。
然后,在步骤180中,将上下文提示模板输入至LLM中,以进行并行推理,并且在步骤190中流式输出答案。
根据本申请的示例性实施例,LLM可以根据上述上下文提示模板生成答案并输出。例如,LLM可选Galactica、LLaMA、ChatGLM、GPT系列、Vicuna等。加速推理框架的输出方式默认为整体输出,即全部答案生成完毕后再一次性返回,若答案较长,输出返回的时间也会较久,用户体验不好。在本申请的实施例中,可以将输出方式调整为流式输出返回答案,针对没有提供流式生成方案的加速推理框架,则自主实现。
此外,本申请还提出了多用户并行方式回答的方案。现有技术中常见的并行回答方案为来一个用户问题,就输入给LLM中生成答案,表面上是多个问题同时进行回答,但在LLM内部仍为串行的方式。在本申请的实施例中,基于加速推理框架的高效并行推理的特点制定了多用户并行推理逻辑。例如,可以设置两个队列,命名为推理队列和等待队列。针对所用显卡,在两个队列中各设置10个位置。在检测到有用户请求时,开始计时,收集3s内所有的用户请求,再一起送入到推理队列中进行推理,这样可以有效利用加速框架batch推理的特性,在使用同样显存资源的情况下,回答花费时间更短。若推理队列中空余至少2个位置,则仍按3s为限收集用户问题再一起送入队列;若推理队列中位置全部占满时,剩余用户请求则进入等待队列,并开始计时,若在6s内,推理队列有至少2个位置释放(问题生成结束则会释放,释放时间不一,答案越短释放越快),则将等待队列中的相应个数的线程送入推理队列中进行并行推理;若等待队列中的问题等待时间超过6s,则可以返回例如“系统正忙,请稍后提问”的提示。
一般而言,可以为LLM设置推理队列和等待队列;当检测到用户问询请求时,收集预设时间内所接收到的所有用户问题,并将用户问题送入到推理队列中,以进行并行推理;当推理队列中的位置全部占满时,将预设时间内所接收到的剩余用户问题送入等待队列,并且当推理队列中出现已释放的位置时,将等待队列中的相应用户问题送入到推理队列中,以进行并行推理;并且当等待队列中的用户问题的等待时长超过等待时长阈值时,返回系统正忙的提示。
因此,根据本申请的实施例,可以利用加速推理框架高效并行推理的优势实现多用户并行推理,可以在不增加显卡成本的情况下,尽可能缩短用户等待时间。
此外,为了能在有限的显存资源下,尽可能多地提升问答数量,在本申请的一些示例性实施例中,提出在基于LangChain框架匹配返回相似文本段落后,对返回的段落再次进行与问题的相似度匹配操作,返回最相似的句子,以减少提示模板prompt中的内容字数,从而降低LLM在推理时的显存资源占用。
图3示出了根据本申请的另一示例实施例的基于LangChain框架和大语言模型LLM的问答方法的流程图。图3所示的问答方法是对图1所示的问答方法的一种改进。为了简洁和清楚起见,图3中省略了与图1中相同的步骤110至130。图3所示出的问答方法的流程与图1所示出的问答方案的流程的区别在于:在生成与问题向量最相关的最终知识段落之后,对返回的最终知识段落再次进行与用户问题的相似度匹配操作。
换言之,图1中的步骤160可以被图3中的步骤1610至1650代替。具体而言,在步骤1610中,对两个相似文本段落进行内容融合以生成与问题向量最相关的最终知识段落;在步骤1620中,将最终知识段落拆分为单句,并对每个单句进行向量化以生成单句向量;在步骤1630中,针对每个单句向量,将该单句向量与问题向量进行相似度匹配以得到相应的单句相似度得分;在步骤1640中,通过从最终知识段落中删除单句相似度得分低于单句相似度阈值的单句,来更新最终知识段落;并且在步骤1650中,基于更新后的最终知识段落来生成上下文提示模板。
在本申请的示例性实施例中,可以将在步骤1610中得到的与问题向量最相关的最终知识段落按照字符方式切分为单句。字符为可作为句子结尾的字符,包含句号、问号、感叹号等。然后,可以计算问题向量与每个单句的相似度。例如,可以使用Embedding模型分别对每个单句进行向量化以生成单句向量,再依次使用如上所述的余弦距离相似度算法来计算问题向量与每个单句向量的相似度,以得到相应的单句相似度得分。接下来,从最终知识段落中删除单句相似度得分低于单句相似度阈值的单句,即,保留最终知识段落中单句相似度得分不低于单句相似度阈值的单句,最终得到更新后的最终知识段落。在特殊情况下,例如,若单句是以问号结尾(说明该单句可能是QA中的问句)且下一单句的相似度得分低于相似度阈值,则保留该单句及其下一单句,防止有用信息丢失。
基于如图3所示的问答方法,可以减少上下文提示模板中的内容字数,从而降低LLM在推理时的显存资源占用,使得在有限的显存资源下,增加可并行的推理数量。同时,还可以避免段落中无关句子对LLM模型产生错误诱导,导致最终回答出错的问题。
以上结合图1至图3描述了根据本申请的实施例的基于LangChain框架和大语言模型LLM的问答方法的具体流程和相应的技术效果。该问答方法可以在如图4所示的问答系统中来实现。图4示出了根据本申请的示例实施例的基于LangChain框架和大语言模型LLM的问答系统400的示意性框图。该问答系统400可以包括处理器420,以及与处理器耦接的接口单元410和存储单元430,接口单元410被配置为接收用户问题,存储单元430被配置为存储LLM和计算机程序指令。在该问答系统中,处理器410被配置为执行计算机程序指令来实现如以上参考附图1至3描述的基于LangChain框架和大语言模型的问答方法,相应地也具有如上所述的技术优势。
上文中提到了“示例性实施例”、“实施例”、“一些实施例”,应理解,在各个实施例中提及的特征并不一定只能应用于该实施例,而是可能用于其他实施例。一个实施例中的特征可以应用于另一实施例,或者可以被包括在另一实施例中。
此外,各种操作或步骤以最有助于理解说明性实施例的方式被描述为多个离散操作;然而,描述的顺序不应被解释为暗示这些操作或步骤必须依赖于顺序。特别是,这些操作或步骤不需要按照呈现的顺序执行。
本申请可以以其他的具体形式实现,而不脱离其精神和本质特征。例如,特定实施例中所描述的特征可以被修改,而系统体系结构并不脱离本申请的基本精神。因此,当前的实施例在所有方面都被看作是示例性的而非限定性的,本申请的范围由所附权利要求而非上述描述定义,并且,落入权利要求的含义和等同物的范围内的全部改变从而都被包括在本申请的范围之中。
Claims (21)
1.一种基于LangChain框架和大语言模型LLM的问答方法,包括:
基于LLM加速推理框架来加载所述LLM;
搭建所述LangChain框架中的文本向量知识库;
对用户问题进行向量化以生成问题向量;
使用两种不同的向量检索库对所述问题向量与所述文本向量知识库进行向量相似度匹配,以返回两组相似文本段落;
针对所述两组相似文本段落,进行两两段落文本相似度匹配,以得到具有最高段落相似度得分的两个相似文本段落;
当所述最高段落相似度得分高于或等于段落相似度阈值时,对所述两个相似文本段落进行内容融合以生成与所述问题向量最相关的最终知识段落,并基于所述最终知识段落生成上下文提示模板;
当所述最高段落相似度得分低于所述段落相似度阈值时,将所述用户问题作为所述上下文提示模板;并且
将所述上下文提示模板输入至所述LLM中,以进行并行推理并且流式输出答案。
2.根据权利要求1所述的问答方法,其中,基于所述最终知识段落生成上下文提示模板包括:
将所述最终知识段落拆分为单句,并对每个单句进行向量化以生成单句向量;
针对每个单句向量,将该单句向量与所述问题向量进行相似度匹配以得到相应的单句相似度得分;
通过从所述最终知识段落中删除单句相似度得分低于单句相似度阈值的单句,来更新所述最终知识段落;并且
基于更新后的最终知识段落来生成所述上下文提示模板。
3.根据权利要求1或2所述的问答方法,其中,基于LLM加速推理框架来加载所述LLM包括:
为所述LLM设置推理队列和等待队列;
当检测到用户问询请求时,收集预设时间内所接收到的所有用户问题,并将所述用户问题送入到所述推理队列中,以进行所述并行推理;
当所述推理队列中的位置全部占满时,将所述预设时间内所接收到的剩余用户问题送入所述等待队列,并且当所述推理队列中出现已释放的位置时,将所述等待队列中的相应用户问题送入到所述推理队列中,以进行所述并行推理;并且
当所述等待队列中的用户问题的等待时长超过等待时长阈值时,返回系统正忙的提示。
4.根据权利要求1或2所述的问答方法,其中,搭建所述LangChain框架中的文本向量知识库包括:
加载本地知识文档,并将该文档读取为文本;
将所述文本拆分为文本块;
对所述文本块进行向量化,以生成文本块向量;以及
将所述文本块向量存入存储库中,以生成所述文本向量知识库。
5.根据权利要求4所述的问答方法,其中,对所述用户问题进行向量化所使用的量化方法与对所述文本块进行向量化所使用的量化方法相同。
6.根据权利要求1或2所述的问答方法,其中,每组相似文本段落包括基于相应的向量检索库得到的具有最高k个相似度得分的k个相似文本段落。
7.根据权利要求2所述的问答方法,其中,将所述最终知识段落拆分为单句包括:按照字符方式将所述最终知识段落拆分为单句。
8.根据权利要求4所述的问答方法,其中,将所述文本拆分为文本块包括:按照字符加长度的方式将所述文本拆分为文本块。
9.根据权利要求4所述的问答方法,其中,所述本地知识文档采用以下格式中的一种或多种:文本、图片、便携式文档格式。
10.根据权利要求4所述的问答方法,其中,所述本地知识文档基于问答相关的领域而被选择并加载。
11.一种基于LangChain框架和大语言模型LLM的问答系统,包括:处理器,以及与所述处理器耦接的接口单元和存储单元,所述接口单元被配置为接收用户问题,所述存储单元被配置为存储所述LLM和计算机程序指令,其中,所述处理器被配置为执行所述计算机程序指令来:
基于LLM加速推理框架来加载所述LLM;
搭建所述LangChain框架中的文本向量知识库;
对所述用户问题进行向量化以生成问题向量;
使用两种不同的向量检索库对所述问题向量与所述文本向量知识库进行向量相似度匹配,以返回两组相似文本段落;
针对所述两组相似文本段落,进行两两段落文本相似度匹配,以得到具有最高段落相似度得分的两个相似文本段落;
当所述最高段落相似度得分高于或等于段落相似度阈值时,对所述两个相似文本段落进行内容融合以生成与所述问题向量最相关的最终知识段落,并基于所述最终知识段落生成上下文提示模板;
当所述最高段落相似度得分低于所述段落相似度阈值时,将所述用户问题作为所述上下文提示模板;并且
将所述上下文提示模板输入至所述LLM中,以进行并行推理并且经由所述接口单元流式输出答案。
12.根据权利要求11所述的问答系统,其中,基于所述最终知识段落生成上下文提示模板包括:
将所述最终知识段落拆分为单句,并对每个单句进行向量化以生成单句向量;
针对每个单句向量,将该单句向量与所述问题向量进行相似度匹配以得到相应的单句相似度得分;并且
通过从所述最终知识段落中删除单句相似度得分低于单句相似度阈值的单句来更新所述最终知识段落,以基于更新后的最终知识段落来生成所述上下文提示模板。
13.根据权利要求11或12所述的问答系统,其中,基于LLM加速推理框架来加载所述LLM包括:
为所述LLM设置推理队列和等待队列;
当检测到用户问询请求时,收集预设时间内所接收到的所有用户问题,并将所述用户问题送入到所述推理队列中,以进行所述并行推理;
当所述推理队列中的位置全部占满时,将所述预设时间内所接收到的剩余用户问题送入所述等待队列,并且当所述推理队列中出现已释放的位置时,将所述等待队列中的相应用户问题送入到所述推理队列中,以进行所述并行推理;并且
当所述等待队列中的用户问题的等待时长超过等待时长阈值时,返回系统正忙的提示。
14.根据权利要求11或12所述的问答系统,其中,搭建所述LangChain框架中的文本向量知识库包括:
加载本地知识文档,并将该文档读取为文本;
将所述文本拆分为文本块;
对所述文本块进行向量化,以生成文本块向量;以及
将所述文本块向量存入存储库中,以生成所述文本向量知识库。
15.根据权利要求14所述的问答系统,其中,对所述用户问题进行向量化所使用的量化方法与对所述文本块进行向量化所使用的量化方法相同。
16.根据权利要求11或12所述的问答系统,其中,每组相似文本段落包括基于相应的向量检索库得到的具有最高k个相似度得分的k个相似文本段落。
17.根据权利要求12所述的问答系统,其中,将所述最终知识段落拆分为单句包括:按照字符方式将所述最终知识段落拆分为单句。
18.根据权利要求14所述的问答系统,其中,将所述文本拆分为文本块包括:按照字符加长度的方式将所述文本拆分为文本块。
19.根据权利要求14所述的问答系统,其中,所述本地知识文档采用以下格式中的一种或多种:文本、图片、便携式文档格式。
20.根据权利要求14所述的问答系统,其中,所述本地知识文档基于问答相关的领域而被选择并加载。
21.一种存储有程序指令的机器可读存储介质,其中,所述程序指令在被处理器执行时使得所述处理器执行如权利要求1至10中任一项所述的基于LangChain框架和大语言模型LLM的问答方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311248327.6A CN117313859A (zh) | 2023-09-25 | 2023-09-25 | 基于LangChain和大语言模型的问答方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311248327.6A CN117313859A (zh) | 2023-09-25 | 2023-09-25 | 基于LangChain和大语言模型的问答方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117313859A true CN117313859A (zh) | 2023-12-29 |
Family
ID=89259668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311248327.6A Pending CN117313859A (zh) | 2023-09-25 | 2023-09-25 | 基于LangChain和大语言模型的问答方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117313859A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117688163A (zh) * | 2024-01-29 | 2024-03-12 | 杭州有赞科技有限公司 | 基于指令微调和检索增强生成的在线智能问答方法及装置 |
CN118096763A (zh) * | 2024-04-28 | 2024-05-28 | 万商电力设备有限公司 | 一种环网负荷开关柜表面质量检测方法 |
CN118133971A (zh) * | 2024-05-06 | 2024-06-04 | 支付宝(杭州)信息技术有限公司 | 基于大语言模型的医疗问答方法和装置 |
CN118132735A (zh) * | 2024-05-07 | 2024-06-04 | 支付宝(杭州)信息技术有限公司 | 医疗规则库的生成方法和装置 |
-
2023
- 2023-09-25 CN CN202311248327.6A patent/CN117313859A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117688163A (zh) * | 2024-01-29 | 2024-03-12 | 杭州有赞科技有限公司 | 基于指令微调和检索增强生成的在线智能问答方法及装置 |
CN117688163B (zh) * | 2024-01-29 | 2024-04-23 | 杭州有赞科技有限公司 | 基于指令微调和检索增强生成的在线智能问答方法及装置 |
CN118096763A (zh) * | 2024-04-28 | 2024-05-28 | 万商电力设备有限公司 | 一种环网负荷开关柜表面质量检测方法 |
CN118133971A (zh) * | 2024-05-06 | 2024-06-04 | 支付宝(杭州)信息技术有限公司 | 基于大语言模型的医疗问答方法和装置 |
CN118132735A (zh) * | 2024-05-07 | 2024-06-04 | 支付宝(杭州)信息技术有限公司 | 医疗规则库的生成方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111753060B (zh) | 信息检索方法、装置、设备及计算机可读存储介质 | |
CN109033068B (zh) | 基于注意力机制的用于阅读理解的方法、装置和电子设备 | |
CN117313859A (zh) | 基于LangChain和大语言模型的问答方法和系统 | |
CN110543557A (zh) | 一种基于注意力机制的医疗智能问答系统的构建方法 | |
CN116166782A (zh) | 一种基于深度学习的智能问答方法 | |
CN112100332A (zh) | 词嵌入表示学习方法及装置、文本召回方法及装置 | |
CN111782826A (zh) | 知识图谱的信息处理方法、装置、设备及存储介质 | |
CN113392265A (zh) | 多媒体处理方法、装置及设备 | |
CN114218379A (zh) | 一种面向智能问答系统的无法回答问题的归因方法 | |
CN116842126A (zh) | 一种利用llm实现知识库精准输出的方法、介质及系统 | |
CN117094395B (zh) | 对知识图谱进行补全的方法、装置和计算机存储介质 | |
Kumari et al. | Context-based question answering system with suggested questions | |
CN117668181A (zh) | 信息处理方法、装置、终端设备以及存储介质 | |
CN110826341A (zh) | 一种基于seq2seq模型的语义相似度计算方法 | |
CN115795018A (zh) | 一种面向电网领域的多策略智能搜索问答方法及系统 | |
CN113672804B (zh) | 推荐信息生成方法、系统、计算机设备及存储介质 | |
CN115658845A (zh) | 一种适用于开源软件供应链的智能问答方法及装置 | |
CN113204679B (zh) | 一种代码查询模型的生成方法和计算机设备 | |
CN115238705A (zh) | 语义解析结果重排序方法及系统 | |
CN112749554B (zh) | 确定文本匹配度的方法、装置、设备及存储介质 | |
CN115359486A (zh) | 一种文档图像中自定义信息的确定方法及系统 | |
CN114510561A (zh) | 答案选择方法、装置、设备及存储介质 | |
CN113590745A (zh) | 一种可解释的文本推断方法 | |
CN111259650A (zh) | 基于类标序列生成式对抗模型的文本自动生成方法 | |
CN118070925B (zh) | 模型训练方法、装置、电子设备、存储介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |