自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

再見(jiàn)RAG,你好Agentic RAG! 精華

發(fā)布于 2024-11-26 15:30
瀏覽
0收藏

在2023年,檢索增強(qiáng)型生成(RAG)技術(shù)占據(jù)了主導(dǎo)地位,而在2024年,智能體工作流程正在推動(dòng)巨大的進(jìn)步。使用AI智能體為構(gòu)建更強(qiáng)大的、健壯的、多功能的大型語(yǔ)言模型(LLM)驅(qū)動(dòng)的應(yīng)用開(kāi)辟了新的可能性。其中一個(gè)可能性是在智能體RAG流程中增強(qiáng)RAG流程中的AI智能體。

再見(jiàn)RAG,你好Agentic RAG!-AI.x社區(qū)

智能體RAG的基礎(chǔ)知識(shí)

什么是檢索增強(qiáng)型生成(RAG)

檢索增強(qiáng)型生成(RAG)是一種構(gòu)建LLM驅(qū)動(dòng)應(yīng)用的技術(shù)。它利用外部知識(shí)源為L(zhǎng)LM提供相關(guān)上下文,減少幻覺(jué)現(xiàn)象。

一個(gè)簡(jiǎn)單的RAG流程包括一個(gè)檢索組件(通常由一個(gè)嵌入模型和一個(gè)向量數(shù)據(jù)庫(kù)組成)和一個(gè)生成組件(一個(gè)LLM)。在推理時(shí),用戶查詢用于在索引文檔上運(yùn)行相似性搜索,檢索與查詢最相似的文檔,并為L(zhǎng)LM提供額外的上下文。

再見(jiàn)RAG,你好Agentic RAG!-AI.x社區(qū)

典型的RAG應(yīng)用有兩個(gè)相當(dāng)大的局限性

  • 簡(jiǎn)單的RAG流程只考慮一個(gè)外部知識(shí)源。然而,一些解決方案可能需要兩個(gè)外部知識(shí)源,一些解決方案可能需要外部工具和API,例如網(wǎng)絡(luò)搜索。
  • 它們是一次性解決方案,這意味著上下文只檢索一次。沒(méi)有對(duì)檢索到的上下文的質(zhì)量進(jìn)行推理或驗(yàn)證。

AI系統(tǒng)中的智能體是什么

隨著LLM的流行,AI智能體和多智能體系統(tǒng)的新范式已經(jīng)出現(xiàn)。AI智能體是具有角色和任務(wù)的LLM,它們可以訪問(wèn)內(nèi)存和外部工具。LLM的推理能力幫助智能體規(guī)劃所需的步驟并采取行動(dòng)來(lái)完成手頭的任務(wù)。

因此,AI智能體的核心組件包括:

  • LLM(具有角色和任務(wù))
  • 內(nèi)存(短期和長(zhǎng)期)
  • 規(guī)劃(例如,反思、自我批評(píng)、查詢路由等)
  • 工具(例如,計(jì)算器、網(wǎng)絡(luò)搜索等)

再見(jiàn)RAG,你好Agentic RAG!-AI.x社區(qū)

一個(gè)流行的框架是ReAct框架。ReAct智能體可以在保持狀態(tài)(在內(nèi)存中)的同時(shí)處理順序多部分查詢,通過(guò)將路由、查詢規(guī)劃和工具使用結(jié)合為一個(gè)單一實(shí)體。

ReAct = 推理 + 行動(dòng)(使用LLM)

這個(gè)過(guò)程包括以下步驟:

  • 思考:在接收到用戶查詢后,智能體推理下一步行動(dòng)
  • 行動(dòng):智能體決定行動(dòng)并執(zhí)行它(例如,工具使用)
  • 觀察:智能體觀察行動(dòng)的反饋
  • 這個(gè)過(guò)程一直迭代,直到智能體完成任務(wù)并響應(yīng)用戶。

再見(jiàn)RAG,你好Agentic RAG!-AI.x社區(qū)

什么是Agentic RAG?

Agentic RAG描述了基于AI智能體實(shí)現(xiàn)的RAG。具體來(lái)說(shuō),它將AI智能體納入RAG流程中,以協(xié)調(diào)其組件并執(zhí)行超出簡(jiǎn)單信息檢索和生成的額外行動(dòng),以克服非智能體流程的局限性。

Agentic RAG描述了基于AI智能體實(shí)現(xiàn)的RAG。

Agentic RAG如何工作?

盡管智能體可以被納入RAG流程的不同階段,智能體RAG最常用于檢索組件中的智能體。

具體來(lái)說(shuō),檢索組件通過(guò)使用具有訪問(wèn)不同檢索工具的檢索智能體而變得智能體化,例如:

  • 向量搜索引擎(也稱為查詢引擎),它在向量索引上執(zhí)行向量搜索(像典型的RAG流程中一樣)
  • 網(wǎng)絡(luò)搜索
  • 計(jì)算器
  • 任何用于以編程方式訪問(wèn)軟件的API,例如電子郵件或聊天程序
  • 等等。

然后RAG智能體可以在以下示例檢索場(chǎng)景中進(jìn)行推理和行動(dòng):

  • 決定是否檢索信息
  • 決定使用哪個(gè)工具檢索相關(guān)信息
  • 制定查詢本身
  • 評(píng)估檢索到的上下文,并決定是否需要重新檢索。

Agentic RAG架構(gòu)

與順序的簡(jiǎn)單RAG架構(gòu)相比,智能體RAG架構(gòu)的核心是智能體。智能體RAG架構(gòu)可以有不同程度的復(fù)雜性。在最簡(jiǎn)單的形式中,單智能體RAG架構(gòu)是一個(gè)簡(jiǎn)單的路由器。然而,你也可以將多個(gè)智能體添加到多智能體RAG架構(gòu)中。本節(jié)討論了兩個(gè)基本的RAG架構(gòu)。

  • 單智能體RAG(路由器)?

在其最簡(jiǎn)單的形式中,智能體RAG是一個(gè)路由器。這意味著你至少有兩個(gè)外部知識(shí)源,智能體決定從哪一個(gè)檢索額外的上下文。然而,外部知識(shí)源不必局限于(向量)數(shù)據(jù)庫(kù)。你也可以從工具中檢索更多信息。例如,你可以進(jìn)行網(wǎng)絡(luò)搜索,或者你可以使用API從Slack頻道或你的電子郵件賬戶中檢索額外的信息。

再見(jiàn)RAG,你好Agentic RAG!-AI.x社區(qū)

  • 多智能體RAG系統(tǒng)?

正如你可以猜到的,單智能體系統(tǒng)也有其局限性,因?yàn)樗鼉H限于一個(gè)智能體進(jìn)行推理、檢索和答案生成。因此,將多個(gè)智能體鏈入多智能體RAG應(yīng)用是有益的。

例如,你可以有一個(gè)主智能體,它協(xié)調(diào)多個(gè)專業(yè)檢索智能體之間的信息檢索。例如,一個(gè)智能體可以從專有的內(nèi)部數(shù)據(jù)源檢索信息。另一個(gè)智能體可以專門從你的個(gè)人賬戶(如電子郵件或聊天)檢索信息。另一個(gè)智能體也可以專門從網(wǎng)絡(luò)搜索中檢索公共信息。

再見(jiàn)RAG,你好Agentic RAG!-AI.x社區(qū)

  • 超越檢索智能體

上述示例顯示了使用不同的檢索智能體。然而,你也可以使用智能體用于檢索之外的其他目的。智能體在RAG系統(tǒng)中的可能性是多種多樣的。

Agentic RAG與(普通)RAG

雖然RAG(發(fā)送查詢、檢索信息、生成響應(yīng))的基本概念保持不變,但工具使用擴(kuò)展了它,使其更加靈活和強(qiáng)大。

可以這樣想:普通的(普通)RAG就像在圖書(shū)館(在智能手機(jī)出現(xiàn)之前)回答一個(gè)具體問(wèn)題。另一方面,智能體RAG就像手中有一部帶有網(wǎng)絡(luò)瀏覽器、計(jì)算器、電子郵件等的智能手機(jī)。

普通RAG智能體RAG訪問(wèn)外部工具否是查詢預(yù)處理否是多步驟檢索否是驗(yàn)證檢索到的信息否是

再見(jiàn)RAG,你好Agentic RAG!-AI.x社區(qū)

實(shí)施智能體RAG?

如前所述,智能體由多個(gè)組件組成。要構(gòu)建智能體RAG流程,有兩種選擇:具有函數(shù)調(diào)用的語(yǔ)言模型或智能體框架。兩種實(shí)現(xiàn)都能達(dá)到相同的結(jié)果,只是取決于你想要的控制和靈活性。

具有函數(shù)調(diào)用的語(yǔ)言模型

語(yǔ)言模型是智能體RAG系統(tǒng)的主要組件。另一個(gè)組件是工具,它們使語(yǔ)言模型能夠訪問(wèn)外部服務(wù)。具有函數(shù)調(diào)用的語(yǔ)言模型提供了一種構(gòu)建智能體系統(tǒng)的方法,允許模型與預(yù)定義的工具進(jìn)行交互。語(yǔ)言模型提供商已將此功能添加到他們的客戶端中。

2023年6月,OpenAI為gpt-3.5-turbo和gpt-4發(fā)布了函數(shù)調(diào)用。它使這些模型能夠可靠地將GPT的能力與外部工具和API連接起來(lái)。開(kāi)發(fā)人員迅速開(kāi)始構(gòu)建應(yīng)用程序,將gpt-4插入代碼執(zhí)行器、數(shù)據(jù)庫(kù)、計(jì)算器等。

Cohere進(jìn)一步推出了他們的連接器API,為Command-R模型套件添加工具。此外,Anthropic和Google為Claude和Gemini發(fā)布了函數(shù)調(diào)用。通過(guò)為這些模型提供外部服務(wù),它可以訪問(wèn)并引用網(wǎng)絡(luò)資源,執(zhí)行代碼等。

函數(shù)調(diào)用不僅適用于專有模型。Ollama為流行的開(kāi)源模型如Llama3.2、nemotron-mini等引入了工具支持。

要構(gòu)建一個(gè)工具,你首先需要定義一個(gè)函數(shù)。在這個(gè)片段中,我們正在編寫(xiě)一個(gè)使用Weaviate的混合搜索從數(shù)據(jù)庫(kù)檢索對(duì)象的函數(shù):

def get_search_results(query: str) -> str:
    """Sends a query to Weaviate's Hybrid Search. Parses the response into a {k}:{v} string."""
    
    response = blogs.query.hybrid(query, limit=5)
    
    stringified_response = ""
    for idx, o in enumerate(response.objects):
        stringified_response += f"Search Result: {idx+1}:\n"
        for prop in o.properties:
            stringified_response += f"{prop}:{o.properties[prop]}"
        stringified_response += "\n"
    
    return stringified_response


然后我們將函數(shù)通過(guò)`tools_schema`傳遞給語(yǔ)言模型。該模式然后在提示中用于語(yǔ)言模型:

tools_schema=[{
    'type': 'function',
    'function': {
        'name': 'get_search_results',
        'description': 'Get search results for a provided query.',
        'parameters': {
          'type': 'object',
          'properties': {
            'query': {
              'type': 'string',
              'description': 'The search query.',
            },
          },
          'required': ['query'],
        },
    },
}]

由于你直接連接到語(yǔ)言模型API,你需要編寫(xiě)一個(gè)循環(huán),該循環(huán)在語(yǔ)言模型和工具之間進(jìn)行路由:

def ollama_generation_with_tools(user_message: str,
                                 tools_schema: List, tool_mapping: Dict,
                                 model_name: str = "llama3.1") -> str:
    messages=[{
        "role": "user",
        "content": user_message
    }]
    response = ollama.chat(
        model=model_name,
        messages=messages,
        tools=tools_schema
    )
    if not response["message"].get("tool_calls"):
        return response["message"]["content"]
    else:
        for tool in response["message"]["tool_calls"]:
            function_to_call = tool_mapping[tool["function"]["name"]]
            print(f"Calling function {function_to_call}...")
            function_response = function_to_call(tool["function"]["arguments"]["query"])
            messages.append({
                "role": "tool",
                "content": function_response,
            })
    
    final_response = ollama.chat(model=model_name, messages=messages)
    return final_response["message"]["content"]


然后你的查詢將如下所示:

ollama_generation_with_tools("How is HNSW different from DiskANN?",
                            tools_schema=tools_schema, tool_mapping=tool_mapping)

智能體框架

DSPy、LangChain、CrewAI、LlamaIndex和Letta等智能體框架的出現(xiàn),為使用語(yǔ)言模型構(gòu)建應(yīng)用程序提供了便利。這些框架通過(guò)將預(yù)構(gòu)建的模板組合在一起,簡(jiǎn)化了構(gòu)建智能體RAG系統(tǒng)的過(guò)程。

  • DSPy支持ReAct智能體和Avatar優(yōu)化。Avatar優(yōu)化描述了使用自動(dòng)化提示工程來(lái)描述每個(gè)工具的使用。
  • LangChain為使用工具提供許多服務(wù)。LangChain的LCEL和LangGraph框架進(jìn)一步提供了內(nèi)置工具。
  • LlamaIndex進(jìn)一步引入了QueryEngineTool,這是一個(gè)用于檢索工具的模板集合。
  • CrewAI是開(kāi)發(fā)多智能體系統(tǒng)的領(lǐng)先框架之一。用于工具使用的一個(gè)關(guān)鍵概念是智能體之間共享工具。
  • Swarm是由OpenAI構(gòu)建的多智能體協(xié)調(diào)框架。Swarm同樣專注于智能體之間如何共享工具。
  • Letta將反映和提煉內(nèi)部世界模型作為函數(shù)。這意味著可能使用搜索結(jié)果來(lái)更新聊天機(jī)器人用戶的智能體內(nèi)存,除了回答問(wèn)題。

https://weaviate.io/blog/what-is-agentic-rag

本文轉(zhuǎn)載自??PaperAgent??

標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦