- 博客(118)
- 收藏
- 关注
原创 # RAG | 检索 # 关键词检索的疑问及解答
下面是一份综合整理的笔记,帮助你快速区分和了解关键词检索(全文检索)与向量检索(语义检索)的核心原理和流程。● 倒排索引:将“每个词”映射到“出现该词的文档集合”中,以便快速定位包含这些关键词的文档。● 向量表示(Embedding):将文本(或句子、词)转化为一串数字向量,体现其语义信息。分词处理:将文本拆解成一个个词(Token),去除无关信息(如停用词、标点)。记录词出现位置:在“词→文档”映射里标注此词出现在哪些文档、位置或频率。○ 记录“词→文档ID”的映射,并存储相关信息(词频、位置等)。
2025-03-17 09:31:29
358
原创 # RAG 框架 # 一文入门 全链路RAG系统构建与优化 —— 架构、策略与实践
本文全面阐述了RAG系统从数据收集、数据清洗(包括领域专有名词处理)、智能数据分块与QA对生成,到向量化、向量数据库选择与配置,再到检索方式及重排序,直至整合输出、监控反馈和安全保障的全流程。通过这一完整方案,旨在为构建高效、稳定且安全的检索增强生成系统提供切实可行的解决方案。
2025-03-13 15:48:17
1540
原创 #Prompt | AI | LLM # 人类如何写出LLM理解的Prompt
Prompt工程不仅是技术问题,也是人类认知和表达的深刻话题。随着LLM技术的不断发展,我们需要持续学习和适应,以更好地理解和利用这些工具。同时,人类的发展将依赖于逻辑思考和审美能力,这些是与LLM交互中的核心竞争力。
2024-11-04 14:25:13
661
原创 # RAG 框架 | 技术栈 #一文读懂Xinference架构!优秀开源项目技术栈分析
Xinference是一个利用actor编程框架Xoscar来管理机器、设备和模型推理进程的系统。每个actor都是模型推理的基本单元,可以集成多种推理后端。它支持多种推理引擎和硬件,并且具有异步和非阻塞的特性。:使用FastAPI实现,提供了一个示例API/status对应函数get_status。命令行:通过Click实现,允许用户在终端与Xinference进行交互。提供了几个命令行工具,如xinference和。Actor:基于Xoscar框架,可以管理计算资源和Python进程,支持并发编程。
2024-10-15 15:51:53
1246
原创 十大机器学习算法深入浅出
本栏目涉及对于回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法的笔记下面是笔记大纲,具体内容可查看**“十大机器学习算法深入浅出”**专栏,内容持续更新,欢迎订阅专栏和专注我!
2024-06-20 18:32:58
760
原创 (持续更新)ai 工程师(nlp)面试问题+答案
浅拷贝:copy()浅拷贝意味着创建一个新的对象,但是这个对象包含的元素仍然是原始对象中元素的引用。也就是说,如果原始对象中的元素是可变的(比如列表、字典等),那么在拷贝对象中修改这些元素会影响到原始对象。深拷贝:deepcopy()深拷贝会创建一个新的对象,并且递归地复制原始对象中的所有对象,因此新对象和原始对象是完全独立的。修改新对象中的元素不会影响原始对象。
2024-05-30 17:34:01
911
原创 RAG vs 意图识别:AI领域的新较量
总的来说,RAG是一种增强语言模型回答能力的框架,它通过检索和利用外部知识来生成回答;意图识别是对话理解的一部分,它帮助系统理解用户的意图并作出相应的反应。两者的选择应基于具体的应用需求、系统设计和预期的用户交互方式。两者在构建交互式AI系统中扮演着不同但互补的角色。RAG适合于需要结合大量。
2024-05-29 17:47:04
2900
原创 RAG技术详解:构建高效、可信赖的知识检索系统
幻觉:在没有答案的情况下提供虚假信息。过时:当用户需要特定的当前响应时,提供过时或通用的信息。来源:从非权威来源创建响应。由于术语混淆,不同的培训来源使用相同的术语来谈论不同的事情,因此会产生不准确的响应。RAG 是解决其中一些挑战的一种方法。它会重定向 LLM,从权威的、预先确定的知识来源中检索相关信息。组织可以更好地控制生成的文本输出,并且用户可以深入了解 LLM 如何生成响应。
2024-05-29 17:40:38
4630
原创 RAG中常用的索引(Index)方式
文本摘要提取:使用文本摘要技术从文档中提取关键句子或段落,形成摘要。关键词提取:识别文档中的关键词汇或短语,以代表文档的主要内容。元数据生成:可能包括文档的标题、作者、发布日期等信息,以及与文档内容相关的标签或分类。结构化存储:将摘要和元数据以结构化的形式存储在数据库中,如关系数据库或NoSQL数据库。快速检索:通过索引快速访问文档的摘要和关键信息,以评估文档的相关性或作为生成回答的参考。
2024-05-29 14:36:09
2222
原创 #LLM入门 | langchain | RAG # 4.7_聊天_Chat
"""该函数用于加载 PDF 文件,切分文档,生成文档的嵌入向量,创建向量数据库,定义检索器,并创建聊天机器人实例。参数:file (str): 要加载的 PDF 文件路径。chain_type (str): 链类型,用于指定聊天机器人的类型。k (int): 在检索过程中,返回最相似的 k 个结果。返回:qa (ConversationalRetrievalChain): 创建的聊天机器人实例。"""# 载入文档# 切分文档# 定义 Embeddings# 根据数据创建向量数据库。
2024-05-23 09:14:37
913
原创 #LLM入门 | langchain | RAG # 4.6_问答
Langchain 在实现与外部数据对话的功能时需要经历下面的5个阶段,它们分别是:Document Loading->Splitting->Storage->Retrieval->Output,如下图所示:图 4.6.1 访问个人数据全流程完成存储和获取相关文档后,需将文档传递给语言模型以生成答案。流程包括提出问题、检索文档、传递文档和问题给模型、获取答案。默认将所有文档切片传入同一上下文窗口,但存在MapReduce、Refine和MapRerank等方法解决上下文窗口限制问题。
2024-05-22 17:02:23
554
原创 # langchain # MMR解决检索冗余问题、实现多样性检索
是一个选择器,用于从一组候选示例中选择出与输入最相关且具有多样性的示例。它通过计算示例与输入之间的语义相似度,然后迭代地选择示例,同时对与已选择示例相似度过高的候选项施加惩罚。
2024-05-22 15:41:11
469
原创 #RAG | AIGC # RAG召回率提升的方法以及优劣势
RAG(Retrieval-Augmented Generation)是一种结合了检索(Retrieval)和生成(Generation)的模型,用于增强大型语言模型(LLMs)的性能。召回率(Recall)是衡量RAG系统性能的关键指标之一,它表示系统能够检索到的相关文档占所有相关文档的比例。:通过改进召回过程来提高从大规模语料库中检索与给定查询相关的文档的准确性和效率[:在召回过程中纳入查询和文档的上下文信息,可以更准确地判断文档与查询的相似度[
2024-05-22 15:06:37
4172
原创 #LLM入门 | langchain | RAG # 4.5_检索(Retrieval)
MMR 算法可以实现兼具相关性与多样性的检索结果,避免信息冗余。定义元数据字段可以进行针对性过滤,提升匹配准确率。SelfQueryRetriever 模块通过语言模型自动分析语句,提取查询字符串与过滤条件,无需手动设置,使检索更智能。ContextualCompressionRetriever 实现压缩检索,仅返回与问题相关的文档片段,可以大幅提升效率并节省计算资源。除向量检索外,还简要介绍了基于 SVM 和 TF-IDF 的检索方法。
2024-05-22 13:50:53
2700
原创 #LLM入门 | langchain | RAG # 4.4_向量数据库与词向量(Vectorstores_and_Embeddings)
回顾一下检索增强生成(RAG)的整体工作流程:图 4.4 检索增强生成整体流程前两节课我们讨论了 Document Loading(文档加载)和 Splitting(分割)。下面我们将使用前两节课的知识对文档进行加载分割。
2024-05-22 13:50:09
709
原创 #Docker | Ngrok# 使用Ngrok和Docker进行内网穿透
启动一个 Ngrok 容器,用来创建一个 HTTP 隧道,把本地的服务暴露在互联网上。这在开发和测试时非常有用,比如当你需要外部用户测试你的本地服务或者需要与远程客户端进行集成测试时。端口,你希望外部用户可以访问这个服务。通过运行上述命令,Ngrok 会提供一个类似于。的 URL,外部用户可以通过这个 URL 访问你的本地服务。假设你在本地运行了一个 Web 服务,该服务监听。
2024-05-14 14:19:55
2216
3
原创 #LLM入门 | langchain | RAG # 4.3_文档分割
上一章讨论了文档标准化加载,现在转向文档的细分,这虽简单却对后续工作有重大影响。
2024-05-07 16:55:53
1708
原创 #LLM入门 | langchain | RAG # 4.2_文档加载
一旦文档被加载,它会被存储在名为pages的变量里。在第二部分,我们利用LangChain加载器从YouTube视频链接下载音频到本地,并用OpenAIWhisperPaser解析器将音频转换为文本。在page变量中,每一个元素都代表一个文档,它们的数据类型是langchain.schema.Document。首先,我们将构建一个 GenericLoader 实例来对 Youtube 视频的下载到本地并加载。接下来,我们将探讨如何加载网页链接,以GitHub上的Markdown文档为例进行学习。
2024-05-07 16:46:01
812
原创 #LLM入门 | langchain | RAG # 4.1 简介_使用 LangChain 访问个人数据
对于希望了解LangChain基础知识的读者,推荐学习《LangChain for LLM Application Development》部分。
2024-05-07 16:45:25
349
原创 # 设计模式 #5.6 Memento备忘录,行为型模式
备忘录模式是一种行为型设计模式,它允许在不破坏对象封装性的情况下捕获对象的内部状态,并将该状态外部化存储,以便在需要时可以恢复到原先的状态。此模式常用于实现撤销操作和历史记录功能。
2024-04-22 11:33:31
338
原创 【方便 | 重要】#LLM入门 | Agent | langchain | RAG # 3.7_代理Agent,使用langchain自带agent完成任务
在本节,我们将创建和使用自定义时间工具。LangChian tool 函数装饰器可以应用用于任何函数,将函数转化为LangChain 工具,使其成为代理可调用的工具。我们需要给函数加上非常详细的文档字符串, 使得代理知道在什么情况下、如何使用该函数/工具。比如下面的函数time,我们加上了详细的文档字符串。# 导入tool函数装饰器@tool"""返回今天的日期,用于任何需要知道今天日期的问题。输入应该总是一个空字符串,\这个函数将总是返回今天的日期,任何日期计算应该在这个函数之外进行。"""
2024-04-19 11:16:55
1428
原创 #LLM入门|AI测试# 3.6_创建测试集,人工/LLM评估
评估是确保语言模型(LLM)问答系统质量的重要步骤,它有助于检测模型在不同文档上的表现,发现不足之处,并通过比较不同模型选择最优方案。定期评估还能监测模型性能是否下降。评估目的包括。基本策略是使用LLM和链来评估其他LLM、链和应用。本章以文档问答应用为例,探讨LangChain中评估的处理和考量。首先,按照 langchain 链的方式构建一个 LLM 的文档问答应用上述代码的主要功能及作用在上一章节中都已说明,这里不再赘述。
2024-04-19 08:45:00
1406
原创 #LLM入门|RAG#3.5_基于文档的问答
大语言模型(LLM)构建的问答系统,通过整合用户文档,提供个性化和专业化回答。系统可检索内部文档或产品说明书,结合语言模型生成精准答案。这种方法让语言模型利用外部文档专业信息,显著提升回答的质量和适用性,使模型服务更具体化,超越通用知识。构建问答系统时,LangChain的嵌入模型和向量存储等组件关键,帮助系统理解文档信息。本章将学习这些组件,以深入理解问答系统。向量储存查询。
2024-04-18 19:19:19
1211
原创 #LLM入门|RAG#3.4_模型链
定义适用于不同场景的提示模板。# 中文#第一个提示适合回答物理问题physics_template = """你是一个非常聪明的物理专家。你擅长用一种简洁并且易于理解的方式去回答问题。当你不知道问题的答案时,你承认\你不知道.这是一个问题:{input}"""#第二个提示适合回答数学问题math_template = """你是一个非常优秀的数学家。你擅长回答数学问题。你之所以如此优秀, \是因为你能够将棘手的问题分解为组成部分,\回答组成部分,然后将它们组合在一起,回答更广泛的问题。
2024-04-18 19:13:08
1062
原创 #langchain | RAG |富文本一致性解析 | NLP # langchain支持的9种PDF内容提取方式
【代码】#langchain | RAG |富文本一致性解析 | NLP # langchain支持的9种PDF内容提取方式。
2024-04-17 10:22:48
1225
原创 # RAG | Langchain # Langchain RAG:打造Markdown文件的结构化分割解决方案
【文章简介】在信息技术快速发展的今天,有效处理和分析文本数据变得尤为重要。Markdown文件因其简洁性和可读性,在知识共享和文档编写中扮演着关键角色。然而,传统的文本分割方法未能充分利用Markdown的结构化特性,导致信息提取和知识理解的效率受限。本文提出一种基于Langchain的结构化分割方法,通过MarkdownHeaderTextSplitter工具,按标题层级精确分割文档,保留关键的结构和上下文信息,特别适合报告和教程等结构化文档。
2024-04-15 17:37:56
11180
4
原创 # docker #docker运行全流程!必看 ! docker image镜像生成、docker运行、重启、docker-compose外挂文件、
必须保证原始启动端口(server启动端口或者通过环境变量设置的端口)、dockerfile expose的端口、docker-compose.yml被映射的端口(如果不需要使用docker-compose.yml、请忽略)三口一致。
2024-04-15 15:31:19
1281
原创 #LangChain | RAG | LLM#LangChain LCEL_使用pipe链接runnables,获取LLM 推理结果
Runnable接口的一个关键优点是,任何两个可运行对象都可以“链接”在一起,形成序列。前一个可运行对象.invoke()调用的输出将作为输入传递给下一个可运行对象。这可以使用管道运算符 () 或更显式.pipe()的方法来完成,该方法执行相同的操作。生成的结果是 RunnableSequence 可运行的,这意味着它可以像任何其他可运行对象一样被调用、流式传输或管道传输。
2024-04-07 14:15:58
709
2
原创 #LangChain | RAG | LLM#LangChain LCEL_基本示例:提示 + 模型 + 输出解析器
LCEL 可以轻松地从基本组件构建复杂的链,并支持开箱即用的功能,例如流式处理、并行性和日志记录。
2024-04-07 11:19:03
975
原创 #设计模式#3.1用做松鼠桂鱼来理解抽象工厂(对象创建型模式)
让我们将“松鼠桂鱼”的例子与抽象工厂模式的原始定义和组件联系起来,以便更好地理解这个设计模式的各个部分。: 这是一个接口或抽象类,定义了产品必须实现的公共接口。在我们的“松鼠桂鱼”例子中,Dish类可以被视为一个抽象产品,它定义了菜品应该具备的基本属性和方法,如preparecook和serve。: 这是实现了抽象产品接口的具体类。在我们的示例中,类是一个具体产品,它继承自Dish并提供了这些方法的具体实现。: 这是一个接口,它定义了一组用于创建抽象产品的方法。在我们的示例中,
2024-03-29 17:39:13
1042
原创 #设计模式#4.6 Flyweight(享元) 对象结构型模式
享元模式是一种结构型设计模式,其主要目标是通过共享大量细粒度的对象来节省内存。享元模式的关键在于区分内部状态(Intrinsic State)和外部状态(Extrinsic State)。方法用于获取一个享元,如果享元不存在,那么它会创建一个新的享元并存储在。,它是一个字典,用于存储享元。
2024-03-29 10:35:36
560
原创 #设计模式#3.1 抽象工厂
的单独的工厂封装起来。在抽象工厂模式中,抽象工厂定义了产品的创建接口,但是由子类决定实例化哪一个产品类。模块来创建抽象基类和抽象方法。是一种创建型设计模式,它提供了一种方式,可以将一组具有。的子类,它们实现了这两个抽象方法,返回具体的产品实例。在Python中,你可以使用。就是一个抽象工厂,它定义了。是一个抽象基类,它定义了。,并在这些子类中实现。
2024-03-29 10:30:25
699
原创 从根本上优雅地解决 VSCode 中的 Python 模块导入问题
本文介绍了如何在 Visual Studio Code (VSCode) 中解决 Python 模块导入问题。当在 VSCode 中运行测试脚本 test_deal_file.py 时,遇到了 ModuleNotFoundError 错误,因为 controllers 包未被识别。通过在 VSCode 的工作区设置中配置环境变量 PYTHONPATH,并将项目路径添加到 Python 的模块搜索路径中,我们能够成功解决这个问题。文章提供了详细的步骤,包括如何修改 settings.json 文件,重启虚拟环
2024-03-27 15:21:16
36316
19
原创 Python包内模块导入:相对导入与绝对导入的实践指南
当前目录:首先在当前工作目录下搜索指定的模块。PYTHONPATH环境变量:接着在环境变量PYTHONPATH中指定的路径列表中搜索。这些路径是除了标准库之外的额外搜索目录。标准库路径:最后在Python安装路径下的lib目录中搜索。
2024-03-26 10:07:52
3932
原创 #GIT|Git Flow#Gitflow工作流程
Gitflow是一种使用功能分支和多个主分支的Git分支模型,它适用于有预定发布周期的项目,也适用于DevOps最佳实践中的持续交付。这个工作流程不会添加任何新的概念或命令,而是为不同的分支分配了非常具体的角色,并定义了它们应该如何以及何时进行交互。这个工作流程非常适合基于版本的软件开发,并且为生产hotfix提供了专用渠道。如果您想了解更多关于Git工作流程的信息,可以访问Atlassian的。
2024-03-25 11:26:31
451
World Employment and Social Outlook Trends 2023
2024-01-12
2023 中国开源开发者报告
2024-01-09
计算机数学模型(博客精选)
2024-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人