import{s as tt,n as st,o as et}from"../chunks/scheduler.505acc25.js";import{S as nt,i as Mt,e as a,s as n,c as y,h as at,a as J,d as s,b as M,f as Kl,g as T,j as U,k as fl,l as Jt,m as e,n as i,t as p,o,p as r}from"../chunks/index.b1175496.js";import{C as Ut,H as D}from"../chunks/Heading.eda51538.js";import{C as lt}from"../chunks/CodeBlock.9d480d26.js";import{C as yt}from"../chunks/CourseFloatingBanner.79ef6243.js";import{E as Tt}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.ea377ea6.js";function it(kl){let c,L,H,P,j,O,w,K,I,ll,u,Rl='<p>您可以通过 <a href="https://huggingface.co/agents-course/notebooks/blob/main/unit2/smolagents/retrieval_agents.ipynb" target="_blank">此 Notebook</a> 跟随代码实践，该文件支持在 Google Colab 中运行。</p>',tl,C,vl="检索增强生成（Retrieval-Augmented Generation，RAG）系统结合了数据检索和生成模型的能力，以提供上下文感知的响应。例如，用户的查询会被传递给搜索引擎，检索结果与查询一起提供给模型，模型随后根据查询和检索到的信息生成响应。",sl,m,Ql="智能驱动的 RAG（Retrieval-Augmented Generation）通过<strong>将自主智能体与动态知识检索相结合</strong>，扩展了传统 RAG 系统。",el,d,Wl="传统 RAG 系统使用 LLM 根据检索数据回答查询，而智能驱动的 RAG <strong>实现了对检索和生成流程的智能控制</strong>，从而提高了效率和准确性。",nl,h,Nl="传统 RAG 系统面临关键限制，例如<strong>依赖单次检索步骤</strong>，以及过度关注与用户查询的直接语义相似性，这可能会忽略相关信息。",Ml,B,El="智能驱动的 RAG 通过允许智能体自主制定搜索查询、评估检索结果并进行多次检索步骤，以生成更定制化和全面的输出，从而解决这些问题。",al,b,Jl,Z,Xl="让我们构建一个能够使用 DuckDuckGo 进行网页搜索的简单智能体。该智能体将检索信息并综合响应来回答查询。通过智能驱动的 RAG，Alfred 的智能体可以：",Ul,V,Al="<li>搜索最新的超级英雄派对趋势</li> <li>优化结果以包含奢侈元素</li> <li>将信息综合成完整方案</li>",yl,g,ql="以下是 Alfred 的智能体实现此功能的代码示例：",Tl,G,il,f,xl="智能体遵循以下流程：",pl,k,_l="<li><strong>请求分析：</strong> Alfred 的智能体识别查询的关键要素——重点关注装饰、娱乐和餐饮的豪华超级英雄主题派对规划</li> <li><strong>执行检索：</strong> 智能体利用 DuckDuckGo 搜索最新相关信息，确保符合 Alfred 对奢侈活动的精细要求</li> <li><strong>信息综合：</strong> 收集结果后，智能体将其处理为覆盖派对所有方面的可执行方案</li> <li><strong>未来参考存储：</strong> 智能体存储检索信息以便后续活动规划时快速访问，优化后续任务效率</li>",ol,R,rl,v,Sl="对于专业任务，自定义知识库非常宝贵。让我们创建可以查询技术文档或专业知识的向量数据库工具。通过语义搜索，智能体可以找到与 Alfred 需求最相关的信息。",cl,Q,zl="向量数据库（vector database）是通过专业 ML 模型实现丰富文档表示的集合，能够快速搜索和检索文档。",ul,W,Yl="该方法将预定义知识与语义搜索相结合，为活动规划提供上下文感知解决方案。通过专业知识访问，Alfred 可以完善派对的每个细节。",jl,N,$l="在此示例中，我们将创建从自定义知识库检索派对策划创意的工具。使用 BM25 检索器搜索知识库并返回最佳结果，同时使用 <code>RecursiveCharacterTextSplitter</code> 将文档分割为更小的块以提高搜索效率：",wl,E,Il,X,Hl="增强后的智能体能够：",Cl,A,Fl="<li>首先检查文档中的相关信息</li> <li>结合知识库的洞察</li> <li>在内存中维护对话上下文</li>",ml,q,dl,x,Dl="构建智能驱动的 RAG 系统时，智能体可以采用以下高级策略：",hl,_,Ll="<li><strong>查询重构：</strong> 智能体可以优化原始查询，生成更匹配目标文档的搜索词</li> <li><strong>多步检索：</strong> 智能体可以进行多次搜索，利用初步结果优化后续查询</li> <li><strong>多源整合：</strong> 结合来自网页搜索和本地文档等多个来源的信息</li> <li><strong>结果验证：</strong> 在将检索内容纳入响应前分析其相关性和准确性</li>",Bl,S,Pl="有效的智能驱动 RAG 系统需要仔细考虑几个关键方面。智能体<strong>应根据查询类型和上下文选择可用工具</strong>，记忆系统帮助维护对话历史避免重复检索，后备策略确保在主要检索方法失败时系统仍能提供价值，验证步骤则帮助确保检索信息的准确性和相关性。",bl,z,Zl,Y,Ol='<li><a href="https://huggingface.co/learn/cookbook/zh-CN/agent_rag" rel="nofollow">Agentic RAG: 使用查询重构和自查询加速您的 RAG 系统！🚀</a> - 使用 smolagents 开发智能驱动 RAG 系统的实践指南</li>',Vl,$,gl,F,Gl;return j=new yt({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/#fileId=https://huggingface.co/agents-course/notebooks/blob/main/unit2/smolagents/retrieval_agents.ipynb"}]}}),w=new Ut({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),I=new D({props:{title:"构建智能驱动的 RAG 系统",local:"构建智能驱动的-rag-系统",headingTag:"h1"}}),b=new D({props:{title:"基于 DuckDuckGo 的基础检索",local:"基于-duckduckgo-的基础检索",headingTag:"h2"}}),G=new lt({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBDb2RlQWdlbnQlMkMlMjBEdWNrRHVja0dvU2VhcmNoVG9vbCUyQyUyMEluZmVyZW5jZUNsaWVudE1vZGVsJTBBJTBBJTIzJTIwJUU1JTg4JTlEJUU1JUE3JThCJUU1JThDJTk2JUU2JTkwJTlDJUU3JUI0JUEyJUU1JUI3JUE1JUU1JTg1JUI3JTBBc2VhcmNoX3Rvb2wlMjAlM0QlMjBEdWNrRHVja0dvU2VhcmNoVG9vbCgpJTBBJTBBJTIzJTIwJUU1JTg4JTlEJUU1JUE3JThCJUU1JThDJTk2JUU2JUE4JUExJUU1JTlFJThCJTBBbW9kZWwlMjAlM0QlMjBJbmZlcmVuY2VDbGllbnRNb2RlbCgpJTBBJTBBYWdlbnQlMjAlM0QlMjBDb2RlQWdlbnQoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMHRvb2xzJTNEJTVCc2VhcmNoX3Rvb2wlNUQlMEEpJTBBJTBBJTIzJTIwJUU0JUJEJUJGJUU3JTk0JUE4JUU3JUE0JUJBJUU0JUJFJThCJTBBcmVzcG9uc2UlMjAlM0QlMjBhZ2VudC5ydW4oJTBBJTIwJTIwJTIwJTIwJTIyU2VhcmNoJTIwZm9yJTIwbHV4dXJ5JTIwc3VwZXJoZXJvLXRoZW1lZCUyMHBhcnR5JTIwaWRlYXMlMkMlMjBpbmNsdWRpbmclMjBkZWNvcmF0aW9ucyUyQyUyMGVudGVydGFpbm1lbnQlMkMlMjBhbmQlMjBjYXRlcmluZy4lMjIlMEEpJTBBcHJpbnQocmVzcG9uc2Up",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> CodeAgent, DuckDuckGoSearchTool, InferenceClientModel

<span class="hljs-comment"># 初始化搜索工具</span>
search_tool = DuckDuckGoSearchTool()

<span class="hljs-comment"># 初始化模型</span>
model = InferenceClientModel()

agent = CodeAgent(
    model=model,
    tools=[search_tool]
)

<span class="hljs-comment"># 使用示例</span>
response = agent.run(
    <span class="hljs-string">&quot;Search for luxury superhero-themed party ideas, including decorations, entertainment, and catering.&quot;</span>
)
<span class="hljs-built_in">print</span>(response)`,wrap:!1}}),R=new D({props:{title:"自定义知识库工具",local:"自定义知识库工具",headingTag:"h2"}}),E=new lt({props:{code:" ",highlighted:`<span class="hljs-keyword">from</span> langchain.docstore.document <span class="hljs-keyword">import</span> Document
<span class="hljs-keyword">from</span> langchain.text_splitter <span class="hljs-keyword">import</span> RecursiveCharacterTextSplitter
<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> Tool
<span class="hljs-keyword">from</span> langchain_community.retrievers <span class="hljs-keyword">import</span> BM25Retriever
<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> CodeAgent, InferenceClientModel

<span class="hljs-keyword">class</span> <span class="hljs-title class_">PartyPlanningRetrieverTool</span>(<span class="hljs-title class_ inherited__">Tool</span>):
    name = <span class="hljs-string">&quot;party_planning_retriever&quot;</span>
    description = <span class="hljs-string">&quot;Uses semantic search to retrieve relevant party planning ideas for Alfred’s superhero-themed party at Wayne Manor.&quot;</span>
    inputs = {
        <span class="hljs-string">&quot;query&quot;</span>: {
            <span class="hljs-string">&quot;type&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
            <span class="hljs-string">&quot;description&quot;</span>: <span class="hljs-string">&quot;The query to perform. This should be a query related to party planning or superhero themes.&quot;</span>,
        }
    }
    output_type = <span class="hljs-string">&quot;string&quot;</span>

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, docs, **kwargs</span>):
        <span class="hljs-built_in">super</span>().__init__(**kwargs)
        self.retriever = BM25Retriever.from_documents(
            docs, k=<span class="hljs-number">5</span>  <span class="hljs-comment"># 检索前 5 个文档</span>
        )

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, query: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
        <span class="hljs-keyword">assert</span> <span class="hljs-built_in">isinstance</span>(query, <span class="hljs-built_in">str</span>), <span class="hljs-string">&quot;Your search query must be a string&quot;</span>

        docs = self.retriever.invoke(
            query,
        )
        <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;\\nRetrieved ideas:\\n&quot;</span> + <span class="hljs-string">&quot;&quot;</span>.join(
            [
                <span class="hljs-string">f&quot;\\n\\n===== Idea <span class="hljs-subst">{<span class="hljs-built_in">str</span>(i)}</span> =====\\n&quot;</span> + doc.page_content
                <span class="hljs-keyword">for</span> i, doc <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(docs)
            ]
        )

<span class="hljs-comment"># 模拟派对策划知识库</span>
party_ideas = [
    {<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;A superhero-themed masquerade ball with luxury decor, including gold accents and velvet curtains.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Party Ideas 1&quot;</span>},
    {<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Hire a professional DJ who can play themed music for superheroes like Batman and Wonder Woman.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Entertainment Ideas&quot;</span>},
    {<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;For catering, serve dishes named after superheroes, like &#x27;The Hulk&#x27;s Green Smoothie&#x27; and &#x27;Iron Man&#x27;s Power Steak.&#x27;&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Catering Ideas&quot;</span>},
    {<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Decorate with iconic superhero logos and projections of Gotham and other superhero cities around the venue.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Decoration Ideas&quot;</span>},
    {<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Interactive experiences with VR where guests can engage in superhero simulations or compete in themed games.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Entertainment Ideas&quot;</span>}
]

source_docs = [
    Document(page_content=doc[<span class="hljs-string">&quot;text&quot;</span>], metadata={<span class="hljs-string">&quot;source&quot;</span>: doc[<span class="hljs-string">&quot;source&quot;</span>]})
    <span class="hljs-keyword">for</span> doc <span class="hljs-keyword">in</span> party_ideas
]

<span class="hljs-comment"># 分割文档以提高搜索效率</span>
    text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=<span class="hljs-number">500</span>,
    chunk_overlap=<span class="hljs-number">50</span>,
    add_start_index=<span class="hljs-literal">True</span>,
    strip_whitespace=<span class="hljs-literal">True</span>,
    separators=[<span class="hljs-string">&quot;\\n\\n&quot;</span>, <span class="hljs-string">&quot;\\n&quot;</span>, <span class="hljs-string">&quot;.&quot;</span>, <span class="hljs-string">&quot; &quot;</span>, <span class="hljs-string">&quot;&quot;</span>],
)
docs_processed = text_splitter.split_documents(source_docs)

<span class="hljs-comment"># 创建检索工具</span>
party_planning_retriever = PartyPlanningRetrieverTool(docs_processed)

<span class="hljs-comment"># 初始化智能体</span>
agent = CodeAgent(tools=[party_planning_retriever], model=InferenceClientModel())

<span class="hljs-comment"># 使用示例</span>
response = agent.run(
    <span class="hljs-string">&quot;Find ideas for a luxury superhero-themed party, including entertainment, catering, and decoration options.&quot;</span>
)

<span class="hljs-built_in">print</span>(response)`,wrap:!1}}),q=new D({props:{title:"增强的检索能力",local:"增强的检索能力",headingTag:"h2"}}),z=new D({props:{title:"资源",local:"资源",headingTag:"h2"}}),$=new Tt({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/zh-CN/unit2/smolagents/retrieval_agents.mdx"}}),{c(){c=a("meta"),L=n(),H=a("p"),P=n(),y(j.$$.fragment),O=n(),y(w.$$.fragment),K=n(),y(I.$$.fragment),ll=n(),u=a("blockquote"),u.innerHTML=Rl,tl=n(),C=a("p"),C.textContent=vl,sl=n(),m=a("p"),m.innerHTML=Ql,el=n(),d=a("p"),d.innerHTML=Wl,nl=n(),h=a("p"),h.innerHTML=Nl,Ml=n(),B=a("p"),B.textContent=El,al=n(),y(b.$$.fragment),Jl=n(),Z=a("p"),Z.textContent=Xl,Ul=n(),V=a("ul"),V.innerHTML=Al,yl=n(),g=a("p"),g.textContent=ql,Tl=n(),y(G.$$.fragment),il=n(),f=a("p"),f.textContent=xl,pl=n(),k=a("ol"),k.innerHTML=_l,ol=n(),y(R.$$.fragment),rl=n(),v=a("p"),v.textContent=Sl,cl=n(),Q=a("p"),Q.textContent=zl,ul=n(),W=a("p"),W.textContent=Yl,jl=n(),N=a("p"),N.innerHTML=$l,wl=n(),y(E.$$.fragment),Il=n(),X=a("p"),X.textContent=Hl,Cl=n(),A=a("ol"),A.innerHTML=Fl,ml=n(),y(q.$$.fragment),dl=n(),x=a("p"),x.textContent=Dl,hl=n(),_=a("ol"),_.innerHTML=Ll,Bl=n(),S=a("p"),S.innerHTML=Pl,bl=n(),y(z.$$.fragment),Zl=n(),Y=a("ul"),Y.innerHTML=Ol,Vl=n(),y($.$$.fragment),gl=n(),F=a("p"),this.h()},l(l){const t=at("svelte-u9bgzb",document.head);c=J(t,"META",{name:!0,content:!0}),t.forEach(s),L=M(l),H=J(l,"P",{}),Kl(H).forEach(s),P=M(l),T(j.$$.fragment,l),O=M(l),T(w.$$.fragment,l),K=M(l),T(I.$$.fragment,l),ll=M(l),u=J(l,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),U(u)!=="svelte-oljz3b"&&(u.innerHTML=Rl),tl=M(l),C=J(l,"P",{"data-svelte-h":!0}),U(C)!=="svelte-131e5hc"&&(C.textContent=vl),sl=M(l),m=J(l,"P",{"data-svelte-h":!0}),U(m)!=="svelte-12eh443"&&(m.innerHTML=Ql),el=M(l),d=J(l,"P",{"data-svelte-h":!0}),U(d)!=="svelte-z9ik08"&&(d.innerHTML=Wl),nl=M(l),h=J(l,"P",{"data-svelte-h":!0}),U(h)!=="svelte-n4cl59"&&(h.innerHTML=Nl),Ml=M(l),B=J(l,"P",{"data-svelte-h":!0}),U(B)!=="svelte-1tq1z84"&&(B.textContent=El),al=M(l),T(b.$$.fragment,l),Jl=M(l),Z=J(l,"P",{"data-svelte-h":!0}),U(Z)!=="svelte-19wnieu"&&(Z.textContent=Xl),Ul=M(l),V=J(l,"UL",{"data-svelte-h":!0}),U(V)!=="svelte-6o8aq3"&&(V.innerHTML=Al),yl=M(l),g=J(l,"P",{"data-svelte-h":!0}),U(g)!=="svelte-xjmoq0"&&(g.textContent=ql),Tl=M(l),T(G.$$.fragment,l),il=M(l),f=J(l,"P",{"data-svelte-h":!0}),U(f)!=="svelte-91zclj"&&(f.textContent=xl),pl=M(l),k=J(l,"OL",{"data-svelte-h":!0}),U(k)!=="svelte-dluhf9"&&(k.innerHTML=_l),ol=M(l),T(R.$$.fragment,l),rl=M(l),v=J(l,"P",{"data-svelte-h":!0}),U(v)!=="svelte-yr8tw1"&&(v.textContent=Sl),cl=M(l),Q=J(l,"P",{"data-svelte-h":!0}),U(Q)!=="svelte-78a1w"&&(Q.textContent=zl),ul=M(l),W=J(l,"P",{"data-svelte-h":!0}),U(W)!=="svelte-zibh65"&&(W.textContent=Yl),jl=M(l),N=J(l,"P",{"data-svelte-h":!0}),U(N)!=="svelte-zbqlw2"&&(N.innerHTML=$l),wl=M(l),T(E.$$.fragment,l),Il=M(l),X=J(l,"P",{"data-svelte-h":!0}),U(X)!=="svelte-17pjt2a"&&(X.textContent=Hl),Cl=M(l),A=J(l,"OL",{"data-svelte-h":!0}),U(A)!=="svelte-jgex8e"&&(A.innerHTML=Fl),ml=M(l),T(q.$$.fragment,l),dl=M(l),x=J(l,"P",{"data-svelte-h":!0}),U(x)!=="svelte-funwgv"&&(x.textContent=Dl),hl=M(l),_=J(l,"OL",{"data-svelte-h":!0}),U(_)!=="svelte-1mxzz72"&&(_.innerHTML=Ll),Bl=M(l),S=J(l,"P",{"data-svelte-h":!0}),U(S)!=="svelte-qsht60"&&(S.innerHTML=Pl),bl=M(l),T(z.$$.fragment,l),Zl=M(l),Y=J(l,"UL",{"data-svelte-h":!0}),U(Y)!=="svelte-276u6l"&&(Y.innerHTML=Ol),Vl=M(l),T($.$$.fragment,l),gl=M(l),F=J(l,"P",{}),Kl(F).forEach(s),this.h()},h(){fl(c,"name","hf:doc:metadata"),fl(c,"content",pt),fl(u,"class","tip")},m(l,t){Jt(document.head,c),e(l,L,t),e(l,H,t),e(l,P,t),i(j,l,t),e(l,O,t),i(w,l,t),e(l,K,t),i(I,l,t),e(l,ll,t),e(l,u,t),e(l,tl,t),e(l,C,t),e(l,sl,t),e(l,m,t),e(l,el,t),e(l,d,t),e(l,nl,t),e(l,h,t),e(l,Ml,t),e(l,B,t),e(l,al,t),i(b,l,t),e(l,Jl,t),e(l,Z,t),e(l,Ul,t),e(l,V,t),e(l,yl,t),e(l,g,t),e(l,Tl,t),i(G,l,t),e(l,il,t),e(l,f,t),e(l,pl,t),e(l,k,t),e(l,ol,t),i(R,l,t),e(l,rl,t),e(l,v,t),e(l,cl,t),e(l,Q,t),e(l,ul,t),e(l,W,t),e(l,jl,t),e(l,N,t),e(l,wl,t),i(E,l,t),e(l,Il,t),e(l,X,t),e(l,Cl,t),e(l,A,t),e(l,ml,t),i(q,l,t),e(l,dl,t),e(l,x,t),e(l,hl,t),e(l,_,t),e(l,Bl,t),e(l,S,t),e(l,bl,t),i(z,l,t),e(l,Zl,t),e(l,Y,t),e(l,Vl,t),i($,l,t),e(l,gl,t),e(l,F,t),Gl=!0},p:st,i(l){Gl||(p(j.$$.fragment,l),p(w.$$.fragment,l),p(I.$$.fragment,l),p(b.$$.fragment,l),p(G.$$.fragment,l),p(R.$$.fragment,l),p(E.$$.fragment,l),p(q.$$.fragment,l),p(z.$$.fragment,l),p($.$$.fragment,l),Gl=!0)},o(l){o(j.$$.fragment,l),o(w.$$.fragment,l),o(I.$$.fragment,l),o(b.$$.fragment,l),o(G.$$.fragment,l),o(R.$$.fragment,l),o(E.$$.fragment,l),o(q.$$.fragment,l),o(z.$$.fragment,l),o($.$$.fragment,l),Gl=!1},d(l){l&&(s(L),s(H),s(P),s(O),s(K),s(ll),s(u),s(tl),s(C),s(sl),s(m),s(el),s(d),s(nl),s(h),s(Ml),s(B),s(al),s(Jl),s(Z),s(Ul),s(V),s(yl),s(g),s(Tl),s(il),s(f),s(pl),s(k),s(ol),s(rl),s(v),s(cl),s(Q),s(ul),s(W),s(jl),s(N),s(wl),s(Il),s(X),s(Cl),s(A),s(ml),s(dl),s(x),s(hl),s(_),s(Bl),s(S),s(bl),s(Zl),s(Y),s(Vl),s(gl),s(F)),s(c),r(j,l),r(w,l),r(I,l),r(b,l),r(G,l),r(R,l),r(E,l),r(q,l),r(z,l),r($,l)}}}const pt='{"title":"构建智能驱动的 RAG 系统","local":"构建智能驱动的-rag-系统","sections":[{"title":"基于 DuckDuckGo 的基础检索","local":"基于-duckduckgo-的基础检索","sections":[],"depth":2},{"title":"自定义知识库工具","local":"自定义知识库工具","sections":[],"depth":2},{"title":"增强的检索能力","local":"增强的检索能力","sections":[],"depth":2},{"title":"资源","local":"资源","sections":[],"depth":2}],"depth":1}';function ot(kl){return et(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ct extends nt{constructor(c){super(),Mt(this,c,ot,it,tt,{})}}export{Ct as component};
