同實現(xiàn)深度與廣度兼?zhèn)涞腤eb搜索架構(gòu))
1. 項目緣起當(dāng)單一智能體在廣域搜索中“力不從心”最近在折騰一個信息聚合類的項目需要從互聯(lián)網(wǎng)上抓取特定領(lǐng)域下非常分散且深度的信息。一開始我嘗試用傳統(tǒng)的爬蟲框架配合一些現(xiàn)成的AI工具比如讓一個智能體去解析網(wǎng)頁、提取關(guān)鍵信息。但很快就遇到了瓶頸面對一個復(fù)雜的電商產(chǎn)品頁面我需要它同時獲取價格、用戶評價、技術(shù)規(guī)格、競品對比甚至是從評測視頻里轉(zhuǎn)錄出的優(yōu)缺點或者當(dāng)我想了解一個新興技術(shù)概念時我需要它不僅能找到維基百科的定義還能從最新的技術(shù)博客、GitHub倉庫的Issue討論、學(xué)術(shù)論文預(yù)印本網(wǎng)站甚至相關(guān)的Reddit或知乎討論中綜合出立體的觀點。這讓我意識到讓一個“全能型”智能體去完成這種“既深又廣”的任務(wù)就像讓一位專家同時精通考古挖掘和衛(wèi)星遙感測繪——不是不可能但效率極低且容易在專業(yè)細節(jié)上出錯。一個智能體可能擅長理解自然語言但對網(wǎng)頁的DOM結(jié)構(gòu)解析不敏感另一個可能精于數(shù)據(jù)提取卻缺乏對話題背景的深度理解來進行有效的鏈接跳轉(zhuǎn)。這就是“WebSwarm: Recursive Multi-Agent Orchestration for Deep-and-Wide Web Search”這個想法誕生的背景。它不是一個具體的軟件包而是一種架構(gòu)思路和任務(wù)編排范式旨在通過多個分工明確、可遞歸調(diào)度的智能體Agent協(xié)同工作來實現(xiàn)對互聯(lián)網(wǎng)信息的深度與廣度兼具的探索。簡單來說WebSwarm的核心思想是“分而治之”與“遞歸探索”。它不寄希望于一個超級AI而是組建一個“蜂群”Swarm每個“工蜂”Agent都有其專長。一個“調(diào)度員”負責(zé)分解復(fù)雜問題將子任務(wù)分發(fā)給“爬取專家”、“內(nèi)容分析員”、“摘要生成器”、“鏈接評估員”等。更重要的是這個過程是遞歸的分析員在閱讀一篇文章時發(fā)現(xiàn)了一個關(guān)鍵但未深入闡述的概念它可以請求調(diào)度員派發(fā)一個新的任務(wù)去專門搜索這個概念從而像鉆探一樣深入到信息鏈的下一層。同時多個智能體可以并行地橫向覆蓋信息的廣度比如同時分析多個信息源的觀點。這種深度遞歸與廣度并行結(jié)合的方式正是“Deep-and-Wide”的含義。2. 蜂群心智多智能體協(xié)同的核心架構(gòu)設(shè)計要實現(xiàn)WebSwarm首要任務(wù)是設(shè)計一個清晰、高效的智能體協(xié)同架構(gòu)。經(jīng)過多次迭代我總結(jié)出一個相對穩(wěn)定可靠的三層模型調(diào)度層、智能體層、工具與記憶層。這個架構(gòu)確保了任務(wù)的流暢分解、執(zhí)行與結(jié)果整合。2.1 調(diào)度層任務(wù)分解與編排的中樞調(diào)度層是整個系統(tǒng)的“大腦”它接收最初始的復(fù)雜查詢例如“請對比特斯拉Model 3和比亞迪漢EV在2023年的用戶滿意度、主要技術(shù)差異及市場聲量”。它的核心職責(zé)不是自己去搜索而是進行任務(wù)規(guī)劃Task Planning。任務(wù)分解的邏輯調(diào)度器首先需要理解用戶意圖的復(fù)雜性。以上述查詢?yōu)槔鼤詣臃纸獬鰩讉€并行的子任務(wù)流子任務(wù)A用戶滿意度需要從汽車論壇、社交媒體、專業(yè)評測網(wǎng)站收集車主評價并進行情感分析。子任務(wù)B技術(shù)差異需要從官網(wǎng)、技術(shù)文檔、專業(yè)汽車媒體獲取兩款車的詳細參數(shù)并進行結(jié)構(gòu)化對比。子任務(wù)C市場聲量需要從新聞網(wǎng)站、行業(yè)報告、社交媒體趨勢中分析一段時間內(nèi)關(guān)于這兩款車的討論熱度和輿論傾向。每個子任務(wù)可能還需要進一步分解。例如“收集車主評價”可以按平臺如汽車之家、知乎、Reddit進一步拆分給不同的爬取智能體并行執(zhí)行。編排與依賴管理調(diào)度器還需要管理任務(wù)間的依賴關(guān)系。比如“技術(shù)差異對比”可能依賴于“獲取技術(shù)參數(shù)”任務(wù)的完成。它維護一個任務(wù)隊列和依賴圖動態(tài)分配任務(wù)給空閑的、能力匹配的智能體。我通常使用像LangGraph或基于Redis構(gòu)建的簡單狀態(tài)機來實現(xiàn)這一層它們能很好地描述智能體之間的工作流和狀態(tài)轉(zhuǎn)換。注意調(diào)度器的設(shè)計要避免“過度分解”。將一個簡單問題分解成過多微任務(wù)會帶來巨大的通信開銷反而降低效率。我的經(jīng)驗法則是分解到子任務(wù)能夠被一個具備特定工具的智能體在有限步驟內(nèi)完成為宜。2.2 智能體層各司其職的專家團隊這一層由多個功能各異的智能體構(gòu)成。每個智能體都是一個具備特定指令Prompt、專業(yè)能力和工具調(diào)用權(quán)限的AI單元。在我的實踐中通常會定義以下幾類核心智能體查詢理解與規(guī)劃智能體通常由一個大語言模型LLM驅(qū)動負責(zé)初步解析用戶查詢并與調(diào)度器協(xié)同完成初步的任務(wù)分解。它需要有一定的常識和領(lǐng)域知識。網(wǎng)絡(luò)爬取與導(dǎo)航智能體這是系統(tǒng)的“手和腳”。它負責(zé)根據(jù)任務(wù)要求訪問網(wǎng)頁。但不同于傳統(tǒng)爬蟲它更“智能”。例如當(dāng)任務(wù)要求“查找最新的評論”它能理解“最新”的含義主動點擊“按時間排序”的按鈕或者翻頁尋找近期內(nèi)容。它需要集成Playwright或Selenium這樣的瀏覽器自動化工具并具備一定的頁面結(jié)構(gòu)理解能力。內(nèi)容解析與提取智能體這是系統(tǒng)的“眼睛”。它接收爬取到的原始HTML或頁面截圖從中提取關(guān)鍵信息。對于結(jié)構(gòu)化數(shù)據(jù)如產(chǎn)品規(guī)格表它可能調(diào)用專門的解析庫對于非結(jié)構(gòu)化文本如評論文章它利用LLM進行摘要、情感分析、實體識別。這個智能體需要對抗網(wǎng)頁噪聲精準(zhǔn)定位所需內(nèi)容。信息驗證與聚合智能體這是系統(tǒng)的“分析員”。它接收來自不同源的信息進行交叉驗證、去重、去偽存真并按照要求如對比表格、總結(jié)報告進行聚合。當(dāng)發(fā)現(xiàn)信息沖突時它可以發(fā)起新的驗證任務(wù)遞歸調(diào)用。深度探索智能體這是實現(xiàn)“Deep”搜索的關(guān)鍵。當(dāng)任何智能體在處理信息時發(fā)現(xiàn)一個值得深入探究但當(dāng)前上下文未詳細說明的關(guān)鍵實體如某項具體技術(shù)“刀片電池”它可以向調(diào)度器發(fā)出請求生成一個新的深度搜索任務(wù)從而啟動一輪新的、聚焦的搜索循環(huán)。2.3 工具與記憶層賦能與持久化智能體并非憑空工作它們需要“工具”來與外界交互需要“記憶”來保存上下文和共享知識。工具集每個智能體被授予調(diào)用特定工具的權(quán)限。工具包括web_search(query): 調(diào)用搜索引擎API。navigate_to(url): 控制瀏覽器訪問頁面。extract_text(html, selector): 從HTML中提取內(nèi)容。llm_call(prompt, context): 向LLM服務(wù)發(fā)起請求進行分析、總結(jié)、推理。scrape_table(url): 專門抓取表格數(shù)據(jù)。analyze_sentiment(text): 情感分析工具。 工具的設(shè)計要粒度適中功能單一便于智能體理解和調(diào)用。共享記憶體這是所有智能體共用的黑板或數(shù)據(jù)庫。它存儲原始數(shù)據(jù)爬取到的網(wǎng)頁快照、文本內(nèi)容。中間結(jié)果各個智能體提取的片段信息、生成的摘要。最終結(jié)論聚合后的對比報告、分析文章。任務(wù)歷史記錄哪些任務(wù)已經(jīng)完成結(jié)果如何避免重復(fù)工作和循環(huán)遞歸。 我常用向量數(shù)據(jù)庫如Chroma、Weaviate來存儲文本片段便于后續(xù)基于語義的檢索和關(guān)聯(lián)用關(guān)系型數(shù)據(jù)庫如SQLite、PostgreSQL來存儲結(jié)構(gòu)化的任務(wù)狀態(tài)和最終結(jié)果。3. 遞歸探索實現(xiàn)“深度”搜索的關(guān)鍵機制“遞歸”是WebSwarm區(qū)別于普通并行爬蟲的靈魂。它不是簡單地把一個大任務(wù)拆成一堆小任務(wù)然后并行執(zhí)行完畢就結(jié)束而是允許任務(wù)在執(zhí)行過程中動態(tài)地派生出新的、更深層次的任務(wù)。遞歸觸發(fā)的典型場景概念解釋內(nèi)容解析智能體在閱讀一篇關(guān)于“固態(tài)電池”的文章時遇到術(shù)語“鋰枝晶生長”而當(dāng)前任務(wù)要求深度理解技術(shù)瓶頸。智能體會判斷這個概念對理解主題至關(guān)重要且當(dāng)前解釋不充分于是觸發(fā)一個遞歸任務(wù)“搜索‘鋰枝晶生長’對固態(tài)電池壽命的具體影響機制”。來源追溯信息驗證智能體發(fā)現(xiàn)某條關(guān)鍵數(shù)據(jù)如“某車型續(xù)航里程”在兩個來源間不一致。它會觸發(fā)遞歸任務(wù)“查找該車型在官方EPA或CLTC測試規(guī)程下的標(biāo)準(zhǔn)續(xù)航數(shù)據(jù)”以追溯最權(quán)威的信源。關(guān)聯(lián)擴展在分析一款產(chǎn)品時聚合智能體認為需要了解其核心競爭對手的最新動態(tài)。它會觸發(fā)遞歸任務(wù)“查找與[當(dāng)前產(chǎn)品]在價格、功能上形成直接競爭的三款最新產(chǎn)品及其市場動態(tài)”。遞歸的控制與終止無限制的遞歸會導(dǎo)致搜索失控陷入“信息黑洞”。必須設(shè)置終止條件深度限制設(shè)定最大遞歸深度例如最多向下探索3層。相關(guān)性閾值派生任務(wù)必須與根任務(wù)的核心主題保持較高的語義相關(guān)性低于閾值則不予批準(zhǔn)。信息增益判斷評估新派生的任務(wù)是否可能帶來新的、重要的信息還是僅僅在重復(fù)已知內(nèi)容。預(yù)算與時間限制設(shè)定總的Token消耗API成本或最長運行時間。在我的實現(xiàn)中調(diào)度器負責(zé)管理遞歸深度和評估相關(guān)性。每次派生新任務(wù)都會檢查當(dāng)前深度和父任務(wù)-子任務(wù)的主題相關(guān)性通過計算文本嵌入向量的余弦相似度實現(xiàn)一個簡單版本。4. 實戰(zhàn)演練構(gòu)建一個簡易的WebSwarm原型理論說了這么多我們來動手搭建一個最小可行產(chǎn)品MVP以完成“獲取并總結(jié)某開源項目GitHub主頁的主要信息及最近三個重要Issue”的任務(wù)為例。4.1 環(huán)境準(zhǔn)備與智能體定義我們使用LangChain框架因為它對多智能體編排有較好的支持。假設(shè)我們使用OpenAI的GPT-4作為LLM引擎。# 環(huán)境準(zhǔn)備 import os from langchain.agents import AgentExecutor, create_openai_tools_agent from langchain_openai import ChatOpenAI from langchain.tools import Tool from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain.memory import ConversationBufferMemory from langchain_community.tools import DuckDuckGoSearchRun from langchain_community.utilities import TextRequestsWrapper import json # 初始化LLM llm ChatOpenAI(modelgpt-4-turbo, temperature0) # 定義幾個基礎(chǔ)工具 search_tool DuckDuckGoSearchRun() requests_tool TextRequestsWrapper() def fetch_github_readme(repo_url): 獲取GitHub倉庫的README內(nèi)容 # 簡單處理將github.com轉(zhuǎn)換為raw.githubusercontent.com if github.com in repo_url: raw_url repo_url.replace(github.com, raw.githubusercontent.com).rstrip(/) /main/README.md try: text requests_tool.get(raw_url) return text[:5000] # 截斷部分內(nèi)容 except: return 無法獲取README內(nèi)容 def parse_github_issues(owner, repo, stateopen, per_page3): 獲取GitHub倉庫的Issue列表模擬 # 這里為簡化我們模擬一個返回。實際應(yīng)調(diào)用GitHub API mock_issues [ {number: 123, title: Bug: Memory leak when processing large files, state: open}, {number: 122, title: Feature request: Add support for JSON-LD, state: open}, {number: 121, title: Documentation: Update quickstart guide, state: closed}, ] return json.dumps(mock_issues, ensure_asciiFalse) # 將函數(shù)封裝為Tool github_readme_tool Tool( namefetch_github_readme, funcfetch_github_readme, description獲取指定GitHub倉庫URL的README.md文件內(nèi)容。輸入應(yīng)為完整的GitHub倉庫URL。 ) github_issues_tool Tool( namefetch_github_issues, funclambda x: parse_github_issues(owner, repo), # 簡化處理實際應(yīng)解析輸入 description獲取指定GitHub倉庫的最新Issue列表。輸入應(yīng)為owner/repo格式。 ) # 定義智能體提示詞 system_prompt 你是一個專門分析GitHub項目的智能體。你的任務(wù)是利用工具獲取項目信息并進行清晰總結(jié)。 請按步驟思考必要時使用工具。你的輸出應(yīng)該是最終的用戶報告。 prompt ChatPromptTemplate.from_messages([ (system, system_prompt), MessagesPlaceholder(variable_namechat_history), (human, {input}), MessagesPlaceholder(variable_nameagent_scratchpad), ])4.2 實現(xiàn)遞歸觸發(fā)邏輯我們創(chuàng)建一個簡單的“調(diào)度器”函數(shù)它根據(jù)當(dāng)前智能體的輸出判斷是否需要觸發(fā)深度探索。def swarm_orchestrator(initial_query): 一個簡化的Swarm調(diào)度器。 處理初始查詢并管理可能的遞歸任務(wù)。 master_agent_prompt 你是一個任務(wù)調(diào)度員。請分析以下用戶查詢并決定是否需要分解為子任務(wù)。 如果需要請輸出一個JSON數(shù)組每個元素是一個子任務(wù)描述。 如果不需要直接輸出‘SINGLE_TASK’。 用戶查詢{query} # 使用LLM判斷任務(wù)復(fù)雜度 analysis llm.invoke(master_agent_prompt.format(queryinitial_query)) analysis_content analysis.content tasks_to_execute [] if analysis_content.strip() ! SINGLE_TASK: try: # 嘗試解析LLM輸出的JSON task_list json.loads(analysis_content) tasks_to_execute task_list except json.JSONDecodeError: # 如果解析失敗當(dāng)作單一任務(wù)處理 tasks_to_execute [{type: primary, description: initial_query}] else: tasks_to_execute [{type: primary, description: initial_query}] all_results [] for task in tasks_to_execute: task_desc task.get(description, ) task_type task.get(type, primary) print(f執(zhí)行任務(wù): {task_desc} (類型: {task_type})) # 根據(jù)任務(wù)類型選擇不同的智能體或工具集 if github in task_desc.lower() and issue in task_desc.lower(): # 派發(fā)給“Issue分析”子智能體 result execute_issue_agent(task_desc) elif github in task_desc.lower(): # 派發(fā)給“項目概覽”主智能體 result execute_main_agent(task_desc) else: # 其他任務(wù)如通用搜索 result execute_general_search_agent(task_desc) all_results.append(result) # **遞歸檢查**分析結(jié)果看是否需要深度探索 recursion_check_prompt 基于以下任務(wù)結(jié)果判斷是否有未充分解釋但對理解主題至關(guān)重要的概念、實體或矛盾點。 如果有請輸出一個新的、具體的搜索查詢用于深入探索該點。如果沒有輸出‘NO_RECURSION_NEEDED’。 任務(wù){(diào)task} 結(jié)果{result} recursion_decision llm.invoke(recursion_check_prompt.format(tasktask_desc, resultresult[:1000])) # 截斷部分結(jié)果 if recursion_decision.content.strip() ! NO_RECURSION_NEEDED: new_query recursion_decision.content.strip() print(f觸發(fā)遞歸探索: {new_query}) # 遞歸調(diào)用但這里可以加入深度限制檢查 recursive_result swarm_orchestrator(new_query) all_results.append(f\n[深度探索結(jié)果 - 針對‘{new_query}’]:\n{recursive_result}) # 聚合所有結(jié)果 final_aggregator_prompt 你是一個信息聚合專家。請將以下關(guān)于同一主題的多份報告整合成一份結(jié)構(gòu)完整、條理清晰的最終報告。 主題{initial_query} 分項報告 {all_results_text} final_report llm.invoke(final_aggregator_prompt.format( initial_queryinitial_query, all_results_text\n---\n.join(all_results) )) return final_report.content # 定義各類型智能體的執(zhí)行函數(shù)示例 def execute_main_agent(query): 執(zhí)行主分析任務(wù)的智能體 tools [github_readme_tool, search_tool] agent create_agent(llm, tools, 你是一個GitHub項目分析專家。) return agent_executor.invoke({input: query})[output] def execute_issue_agent(query): 執(zhí)行Issue分析任務(wù)的智能體 tools [github_issues_tool] agent create_agent(llm, tools, 你專門分析GitHub Issue總結(jié)問題類型、狀態(tài)和討論焦點。) return agent_executor.invoke({input: query})[output] def execute_general_search_agent(query): 執(zhí)行通用搜索的智能體 tools [search_tool] agent create_agent(llm, tools, 你是一個網(wǎng)絡(luò)搜索專家。) return agent_executor.invoke({input: query})[output] # 輔助函數(shù)創(chuàng)建智能體 def create_agent(llm, tools, system_message): prompt ChatPromptTemplate.from_messages([ (system, system_message), MessagesPlaceholder(variable_namechat_history), (human, {input}), MessagesPlaceholder(variable_nameagent_scratchpad), ]) agent create_openai_tools_agent(llm, tools, prompt) return AgentExecutor(agentagent, toolstools, verboseTrue, memoryConversationBufferMemory(memory_keychat_history, return_messagesTrue)) # 運行示例 if __name__ __main__: query 分析LangChain項目的GitHub倉庫總結(jié)其主要功能并列出最近三個重要的issue final_result swarm_orchestrator(query) print(\n *50) print(最終報告) print(*50) print(final_result)這個原型展示了WebSwarm的基本工作流程任務(wù)分解、智能體分工、遞歸觸發(fā)以及結(jié)果聚合。在實際應(yīng)用中你需要更健壯的任務(wù)隊列如Celery、更豐富的工具集、更精確的智能體指令以及完善的錯誤處理和重試機制。5. 避坑指南從構(gòu)想到穩(wěn)定運行的挑戰(zhàn)在將WebSwarm從概念驗證推向生產(chǎn)可用的過程中我踩過不少坑這里分享幾個關(guān)鍵的注意事項。5.1 智能體“幻覺”與任務(wù)漂移LLM驅(qū)動的智能體最大的問題之一是產(chǎn)生“幻覺”或偏離核心任務(wù)。例如一個內(nèi)容解析智能體可能突然開始對網(wǎng)頁的UI設(shè)計進行評論而不是提取指定信息。解決方案嚴格的指令約束在智能體的系統(tǒng)提示詞System Prompt中必須極其明確地規(guī)定其角色、職責(zé)和禁止事項。使用類似“你必須且只能做以下事情1... 2...”的強約束語句。輸出格式強制要求智能體以嚴格的JSON、XML或特定標(biāo)記格式輸出。這便于后續(xù)程序化解析也減少了自由發(fā)揮的空間。中間結(jié)果驗證調(diào)度器或一個專門的“驗證智能體”應(yīng)檢查子任務(wù)的結(jié)果是否在預(yù)期范圍內(nèi)。如果發(fā)現(xiàn)輸出格式錯誤或內(nèi)容明顯偏離可以將該任務(wù)重新加入隊列或標(biāo)記為失敗。5.2 遞歸失控與循環(huán)陷阱遞歸是強大的但也危險。系統(tǒng)可能陷入無限循環(huán)智能體A發(fā)現(xiàn)概念X需要探索派生出任務(wù)B智能體B在探索X時又引出了概念Y派生出任務(wù)C任務(wù)C可能再次指向A……或者對同一個概念進行無限深度的挖掘。解決方案全局記憶與去重所有派生的任務(wù)在加入隊列前必須與全局記憶體中的歷史任務(wù)進行比對基于任務(wù)描述的語義相似度。如果相似度超過閾值則視為重復(fù)任務(wù)直接返回已有結(jié)果或丟棄。嚴格的深度與預(yù)算控制如前所述必須設(shè)置硬性上限。這不僅包括遞歸深度還包括總API調(diào)用次數(shù)、總運行時間、總Token消耗等。目標(biāo)相關(guān)性動態(tài)評估隨著遞歸深入新任務(wù)與根任務(wù)的相關(guān)性可能減弱。可以設(shè)置一個相關(guān)性衰減閾值當(dāng)派生任務(wù)與根任務(wù)的主題向量相似度低于該閾值時停止遞歸。5.3 性能瓶頸與成本控制多個智能體并行運行頻繁調(diào)用LLM和網(wǎng)絡(luò)請求很容易導(dǎo)致速度變慢和費用激增。解決方案異步與并行化使用異步框架如asyncio來管理智能體的工具調(diào)用特別是網(wǎng)絡(luò)I/O操作可以極大提升吞吐量。緩存策略對相同的搜索查詢、相同的網(wǎng)頁內(nèi)容使用緩存。可以將請求的URL和參數(shù)哈希后作為鍵存儲結(jié)果。對于LLM調(diào)用也可以對相似的Prompt進行緩存需注意Prompt中可能包含變化的上下文。智能體調(diào)度優(yōu)化不是所有任務(wù)都需要最強大的GPT-4。對于簡單的文本提取、格式轉(zhuǎn)換可以使用更小、更快的模型如GPT-3.5-Turbo甚至規(guī)則引擎。調(diào)度器應(yīng)根據(jù)任務(wù)復(fù)雜度分配不同“算力”的智能體。分級任務(wù)處理對于“廣度”搜索部分可以先使用快速、低成本的方式如僅抓取標(biāo)題和摘要進行海選篩選出最有價值的少數(shù)幾個來源后再啟動“深度”解析智能體進行精細處理。5.4 網(wǎng)站反爬與魯棒性智能體控制的瀏覽器行為雖然比簡單爬蟲更接近人類但仍可能觸發(fā)反爬機制。解決方案人性化操作模擬在爬取智能體中引入隨機延遲、模擬鼠標(biāo)移動、滾動頁面等行為。代理池與輪換使用高質(zhì)量的代理IP池并在不同智能體或任務(wù)間輪換。失敗重試與降級策略當(dāng)遇到訪問失敗如403、429狀態(tài)碼時不應(yīng)立即放棄。可以更換代理、更換User-Agent、增加延遲后重試。如果多次失敗可以降級為使用搜索引擎快照如Google Cached或調(diào)用第三方網(wǎng)頁快照API。尊重robots.txt盡管技術(shù)上可以繞過但對于長期、大規(guī)模的合規(guī)項目設(shè)置智能體遵守目標(biāo)網(wǎng)站的robots.txt協(xié)議是必要的這能減少被封禁的風(fēng)險。WebSwarm的構(gòu)建是一個系統(tǒng)工程它巧妙地將大語言模型的理解與推理能力、傳統(tǒng)爬蟲的獲取能力、以及軟件工程中的任務(wù)編排思想結(jié)合在一起。它不是為了替代搜索引擎而是為了在搜索引擎之上構(gòu)建一個能夠理解復(fù)雜意圖、自主深入挖掘、并綜合呈現(xiàn)的智能信息助理。從簡單的項目調(diào)研到復(fù)雜的競品分析、學(xué)術(shù)文獻綜述其應(yīng)用場景非常廣泛。當(dāng)然其復(fù)雜度和成本也相對較高更適合對信息深度和廣度有極致要求的場景。