RAG已于2025年成为一种流行的技术,它避免了型号既昂贵又耗时的模型进行微调。在当前情况下,对抹布框架的需求增加了,让我们了解这些是什么。检索增强的生成(RAG)框架是人工智能领域的重要工具。它们通过允许他们从外部来源检索相关信息来增强大语模型(LLMS)的功能。这会导致更准确和上下文感知的响应。在这里,我们将探索五个著名的抹布框架:Langchain,Llamaindex,Langgraph,Haystack和Ragflow。每个框架都提供可以改善您的AI项目的独特功能。
目录
- Langchain
- Llamaindex
- Langgraph
- 草垛
- 破布
- 结论
1。兰班
Langchain是一个灵活的框架,可简化使用LLMS的应用程序的开发。它提供了构建抹布应用程序的工具,使集成直接。
-
关键功能:
- 模块化设计,以便于自定义。
- 支持各种LLM和数据源。
- 内置工具用于记录检索和处理。
- 适用于聊天机器人和虚拟助手。
这是动手:
安装以下库
呢pip安装langchain_community tiktoken langchain-openai langchainhub chromadb langchain
设置OpenAI API键和操作系统环境
从GetPass Import GetPass OpenAi = getPass(“ OpenAi API键:”) 导入操作系统 os.environ [“ openai_api_key”] = OpenAi
导入以下依赖关系
导入BS4 来自兰链进口枢纽 来自langchain.text_splitter导入recursivecharactertextsplitter 来自langchain_community.document_loaders导入webbaseloader 来自langchain_community.vectorstores导入色度 来自langchain_core.output_parsers import stroutputparser 来自langchain_core.runnables导入RunnablePassThrough 来自langchain_openai进口chatopenai,openaiembeddings
使用Webbase加载器加载文档(用自己的数据替换)
#加载文档 loader = webbaseloader( web_paths =(“ https://lilianweng.github.io/posts/2023-06-23-Agent/”,), bs_kwargs = dict( parse_only = bs4.soupstrainer( _ =类 ) ), ) docs = loader.load()
使用Recursivecharactertextsplitter将文档分解
# 分裂 text_splitter = recursivecharactertextsplitter(chunk_size = 1000,chunk_overlap = 200) splits = text_splitter.split_documents(文档)
将矢量文档存储在Chromadb中
#嵌入 vectorstore = chroma.from_documents(文档=拆分, 嵌入= openaiembeddings()) retriever = vectorstore.as_retriever()
从Langchain Hub中拉出抹布提示并定义LLM
# 迅速的 提示= hub.pull(“ rlm/rag-prompt”) #llm llm = chatopenai(model_name =“ gpt-3.5-turbo”,温度= 0)
处理检索的文档
#后处理 def格式_docs(文档): 返回“ \ n \ n”。
创建抹布链
# 链 rag_chain =( {“ context”:retriever | format_docs,“问题”:RunnablePassThrough()} |迅速的 | LLM | StroutputParser()
援引链条
# 问题 rag_chain.invoke(“什么是任务分解?”)
输出
'任务分解是一种用于将复杂任务分解成的技术<br> 较小,更简单的步骤。这种方法可帮助代理商提前计划和<br> 更有效地处理困难的任务。可以完成任务分解<br> 通过各种方法,包括使用提示技术,特定于任务<br> 指示或人类投入。
另请阅读:在此处找到有关Langchain的所有内容。
2。llamaindex
LlamainDex(以前称为GPT指数)着重于组织和检索LLM应用程序的数据。它可以帮助开发人员快速访问和使用大型数据集。
-
关键功能:
- 组织数据以进行快速查找。
- 抹布工作流的可自定义组件。
- 支持多种数据格式,包括PDF和SQL。
- 与Pinecone和Faiss等载体商店集成。
这是动手:
安装以下依赖关系
! ! !
导入以下依赖关系并初始化LLM和嵌入
来自llama_index.llms.openai进口Openai 来自llama_index.embeddings.openai进口openaiembedding llm = OpenAi(型号='gpt-4O') embed_model = openaiembedding() 来自llama_index.core导入设置 settings.llm = llm settings.embed_model = embed_model
下载数据(您可以用数据替换)
!
使用SimpleDirectoryReader读取数据
来自llama_index.core导入simpledirectoryReader documents = simperedirectoryReader(input_files = [“/content/uber_2021.pdf”])。load_data()
使用tokentextsplitter将文档分解
来自llama_index.core.node_parser import tokentextsplitter splitter = tokentextsplitter( chunk_size = 512, chunk_overlap = 0, ) nodes = splitter.get_nodes_from_documents(文档)
将矢量嵌入在矢量storeIndex中
来自llama_index.core导入vectorstoreindex index = vectorstoreIndex(节点) query_engine = index.as_query_engine(samelity_top_k = 2) 使用抹布调用LLM 响应= query_engine.query(“ 2021年Uber的收入是多少?”) 打印(响应)
输出
'2021年Uber的收入为1.717亿美元。
3。朗格拉夫
Langgraph将LLM与基于图的数据结构联系起来。该框架对于需要复杂数据关系的应用程序很有用。
-
关键功能:
- 有效地从图形结构中检索数据。
- 将LLMS与图形数据相结合,以获得更好的上下文。
- 允许自定义检索过程。
代码
安装以下依赖关系
%pip安装 - Quiet-升级Langchain-Text-Splitters Langchain-Community Langgraph Langchain-Openai
初始化模型,嵌入和向量数据库
来自langchain.chat_models导入init_chat_model llm = init_chat_model(“ gpt-4o-mini”,model_provider =“ openai”) 来自langchain_openai进口openaiembeddings 嵌入= openaiembeddings(model =“ text-embedding-3-large”) 从langchain_core.vectorstores导入inmemoryvectorstore vector_store = inmemoryvectorstore(嵌入)
导入以下依赖关系
导入BS4 来自兰链进口枢纽 来自langchain_community.document_loaders导入webbaseloader 来自langchain_core.documents导入文档 来自langchain_text_splitter 从langgraph.graph导入开始,stategraph 从typing_extensions导入列表,TypedDict
使用Webbaseloader下载数据集(用您自己的数据集替换)
#博客的负载和块内容 loader = webbaseloader( web_paths =(“ https://lilianweng.github.io/posts/2023-06-23-Agent/”,), bs_kwargs = dict( parse_only = bs4.soupstrainer( _ =类 ) ), ) docs = loader.load()
使用Recursivecharactertextsplitter的文档分组
text_splitter = recursivecharactertextsplitter(chunk_size = 1000,chunk_overlap = 200) all_splits = text_splitter.split_documents(doc) #索引块 _ = vector_store.add_documents(documents = all_splits)
从Langchain Hub中提取提示
#定义提示提示的提示 提示= hub.pull(“ rlm/rag-prompt”) 定义langgraph中的状态,节点和边缘 定义申请状态 班级状态(键入): 问题:str 上下文:列表[文档] 答案:str #定义应用程序步骤 def检索(状态:状态): retive_docs = vector_store.simurility_search(state [“ QUADICY”]) 返回{“ context”:retivered_docs} def生成(状态:状态): docs_content =“ \ n \ n”。 消息=提示。 响应= llm.invoke(消息) 返回{“答案”:wenspy.content}
编译图
#编译应用程序和测试 graph_builder = stategraph(state).add_seperence([[检索,生成]) graph_builder.add_edge(开始,“检索”) 图= graph_builder.compile()
援引LLM的抹布
响应= graph.invoke({“问题”:“什么是任务分解?”}) 打印(响应[“答案”])
输出
任务分解是将复杂的任务分解为<br> 较小,易于管理的步骤。这可以使用链等技术来实现<br> 思想(cot)或思想树,这些思想树指导模型来推理步骤<br> 逐步或评估多种可能性。目标是简化复合物<br> 任务并增强对推理过程的理解。
4。Haystack
Haystack是用于开发由LLMS和Transformer模型提供支持的应用程序的端到端框架。它在文档搜索和问答中都擅长。
-
关键功能:
- 将文档搜索与LLM功能结合在一起。
- 使用各种检索方法来最佳结果。
- 为快速开发提供预先建造的管道。
- 与Elasticsearch和OpenSearch兼容。
这是动手:
安装以下依赖关系
!PIP安装Haystack-ai !PIP安装“数据集> = 2.6.1” !pip安装“句子转换器> = 3.0.0” 导入矢量店并初始化它 来自haystack.document_stores.in_memory导入inmemorydocumentStore document_store = inmemorydocumentStore()
从数据集库加载内置数据集
从数据集import load_dataset 来自Haystack导入文档 dataset = load_dataset(“ bilgeyucel/seven七个插图”,split =“ train”) docs = [document(content = doc [“ content”],元= doc [“ meta”])的doc中的doc]
下载嵌入式模型(您也可以用OpenAI嵌入替换)
来自haystack.components.embedder doc_embedder = sendencetransformersdocumentembedder(model =“句子转换器/all-minilm-l6-v2”) doc_embedder.warm_up() docs_with_embeddings = doc_embedder.run(docs) document_store.write_documents(docs_with_embeddings [“ documents”])
将嵌入在矢量店中存储
来自haystack.components.retrievers.in_memory导入inmemoryembeddingriever refierver = inmemoryembeddingriever(document_store)
定义抹布的提示
来自haystack.components.builders导入chatpromptbuilder 来自haystack.dataclasses intim chatmessage 模板= [ chatmessage.from_user( ”“” 鉴于以下信息,请回答问题。 语境: {文档中的文档%}%} {{document.content}} {%endfor%} 问题:{{Quartion}} 回答: ”“” ) 这是给 提示_builder = chatpromptBuilder(template =模板)
初始化LLM
来自haystack.components.generators.chat导入openaichatgenerator chat_generator = OpenAICHATGENERATOR(Model =“ GPT-4O-Mini”)
定义管道节点
从Haystack Import Pipeline basic_rag_pipeline = pipeline() #将组件添加到您的管道 basic_rag_pipeline.add_component(“ text_embedder”,text_embedder) BASIC_RAG_PIPELINE.ADD_COMPONENT(“ retriever”,retriever) BASIC_RAG_PIPELINE.ADD_COMPONENT(“ strump_builder”,strump_builder) basic_rag_pipeline.add_component(“ llm”,chat_generator)
连接节点
#现在,将组件彼此连接 basic_rag_pipeline.connect(“ text_embedder.embedding”,“ retriever.query_embedding”) basic_rag_pipeline.connect(“ retriever”,“ strump_builder”) basic_rag_pipeline.connect(“ strump_builder.prompt”,“ llm.messages”)
使用抹布调用LLM
问题=“罗德雕像是什么样的?” 响应= basic_rag_pipeline.run({“ text_embedder”:{“ text”:question},“ strump_builder”:{“ Question”:Quartion}}) 打印(响应[“ llm”] [“回复”] [0] .Text)
输出
批次:100%<br><br> 1/1 [00:00 <br> ``罗德巨人的巨像,希腊太阳神雕像,被认为是<br> 站高约33米(108英尺),建造<br> 铁领带和黄铜板形成其皮肤,里面充满了石块。<br> 尽管其外观的具体细节尚不清楚,但<br> 当代帐户表明它的头发带有青铜或银色<br> 尖峰像头部的火焰一样辐射。雕像可能描绘了赫利奥斯<br> 以一个强大的指挥姿势,可能用一只手遮住他的眼睛,<br> 类似于当时的太阳神的其他代表。总体而言,它<br> 旨在投影力量和光芒,庆祝罗德斯的胜利<br> 在敌人上。
5。破布
破烂的重点是集成检索和发电过程。它简化了抹布应用的开发。
-
关键功能:
- 简化了检索与发电之间的连接。
- 允许量身定制的工作流以满足项目需求。
- 轻松地与各种数据库和文档格式集成。
这是动手:
在破布中注册,然后单击尝试破烂
然后单击创建知识库
然后转到模型提供商,然后选择要使用的LLM模型,我们在此处使用Groq并粘贴其API密钥。
然后转到系统模型设置,然后从那里选择聊天模型。
现在,转到数据集并上传所需的PDF,然后单击“解析状态”列附近的播放按钮,然后等待PDF进行解析。
现在,转到聊天部分在那里创建助手,给它一个名字,还选择您创建的知识库。
然后创建一个新的聊天,并提出一个问题,它将通过您的知识库执行抹布并相应地回答。
结论
GRAG近来已成为自定义企业数据集的重要技术,因此,对抹布框架的需求已大大增加。 Langchain,LlamainDex,Langgraph,Haystack和Ragflow等框架在AI应用中取得了重大进步。通过使用这些框架,开发人员可以创建提供准确和相关信息的系统。随着AI的不断发展,这些工具将在塑造智能应用程序中发挥重要作用。
以上是AI应用程序的前5个RAG框架的详细内容。更多信息请关注PHP中文网其他相关文章!

经常使用“ AI-Ready劳动力”一词,但是在供应链行业中确实意味着什么? 供应链管理协会(ASCM)首席执行官安倍·埃什肯纳齐(Abe Eshkenazi)表示,它表示能够评论家的专业人员

分散的AI革命正在悄悄地获得动力。 本周五在德克萨斯州奥斯汀,Bittensor最终游戏峰会标志着一个关键的时刻,将分散的AI(DEAI)从理论转变为实际应用。 与闪闪发光的广告不同

企业AI面临数据集成挑战 企业AI的应用面临一项重大挑战:构建能够通过持续学习业务数据来保持准确性和实用性的系统。NeMo微服务通过创建Nvidia所描述的“数据飞轮”来解决这个问题,允许AI系统通过持续接触企业信息和用户互动来保持相关性。 这个新推出的工具包包含五个关键微服务: NeMo Customizer 处理大型语言模型的微调,具有更高的训练吞吐量。 NeMo Evaluator 提供针对自定义基准的AI模型简化评估。 NeMo Guardrails 实施安全控制,以保持合规性和适当的

AI:艺术与设计的未来画卷 人工智能(AI)正以前所未有的方式改变艺术与设计领域,其影响已不仅限于业余爱好者,更深刻地波及专业人士。AI生成的艺术作品和设计方案正在迅速取代传统的素材图片和许多交易性设计活动中的设计师,例如广告、社交媒体图片生成和网页设计。 然而,专业艺术家和设计师也发现AI的实用价值。他们将AI作为辅助工具,探索新的美学可能性,融合不同的风格,创造新颖的视觉效果。AI帮助艺术家和设计师自动化重复性任务,提出不同的设计元素并提供创意输入。 AI支持风格迁移,即将一种图像的风格应用

Zoom最初以其视频会议平台而闻名,它通过创新使用Agentic AI来引领工作场所革命。 最近与Zoom的CTO XD黄的对话揭示了该公司雄心勃勃的愿景。 定义代理AI 黄d

AI会彻底改变教育吗? 这个问题是促使教育者和利益相关者的认真反思。 AI融入教育既提出了机遇和挑战。 正如科技Edvocate的马修·林奇(Matthew Lynch)所指出的那样

美国科学研究和技术发展或将面临挑战,这或许是由于预算削减导致的。据《自然》杂志报道,2025年1月至3月期间,美国科学家申请海外工作的数量比2024年同期增加了32%。此前一项民意调查显示,75%的受访研究人员正在考虑前往欧洲和加拿大寻找工作。 过去几个月,数百项NIH和NSF的拨款被终止,NIH今年的新拨款减少了约23亿美元,下降幅度接近三分之一。泄露的预算提案显示,特朗普政府正在考虑大幅削减科学机构的预算,削减幅度可能高达50%。 基础研究领域的动荡也影响了美国的一大优势:吸引海外人才。35

Openai推出了强大的GPT-4.1系列:一个专为现实世界应用设计的三种高级语言模型家族。 这种巨大的飞跃提供了更快的响应时间,增强的理解和大幅降低了成本


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器