网页搜索
聊天界面具有强大的网页搜索功能。网页搜索功能工作原理的高级概述
- 使用
TASK_MODEL
从用户提示生成适当的搜索查询 - 通过外部提供者(例如 Serper)或通过本地抓取 Google 结果执行网页搜索
- 将每个搜索结果加载到 Playwright 中并抓取
- 将抓取的 HTML 转换为 Markdown 树,其中标题作为父级
- 为每个 Markdown 元素创建嵌入
- 使用向量相似性搜索(内积)查找与用户查询最接近的嵌入
- 获取相应的 Markdown 元素及其父级,最多 8000 个字符
- 将信息作为上下文提供给模型
提供者
网页搜索支持许多提供者,或者您可以使用本地抓取的 Google 结果。
本地
对于本地抓取的 Google 结果,请在 .env.local
中添加 USE_LOCAL_WEBSEARCH=true
。请注意,您可能会遇到速率限制,因为我们没有尝试使流量看起来合法。为了避免这种情况,您可以选择一个提供者(例如 Serper),官方实例上使用了该提供者。
SearXNG
SearXNG 是一款免费的互联网元搜索引擎,它聚合来自各种搜索服务和数据库的结果。用户不会被追踪或分析。
您可以通过 SEARXNG_QUERY_URL
启用支持,其中 <query>
将被替换为查询关键字。请参阅 官方文档 以获取更多信息
示例:https://searxng.yourdomain.com/search?q=<query>&engines=duckduckgo,google&format=json
第三方
也支持许多第三方提供者。官方实例使用 Serper。
YDC_API_KEY=docs.you.com api key here
SERPER_API_KEY=serper.dev api key here
SERPAPI_KEY=serpapi key here
SERPSTACK_API_KEY=serpstack api key here
SEARCHAPI_KEY=searchapi api key here
屏蔽/允许列表
您可以屏蔽或允许来自网页搜索结果的特定网站。使用允许列表时,只使用允许列表中的链接。对于支持的搜索引擎,这些链接将直接从结果中屏蔽。结果中任何**部分或完全匹配**条目的 URL 都将被过滤掉。
WEBSEARCH_BLOCKLIST=`["youtube.com", "https://example.com/foo/bar"]`
WEBSEARCH_ALLOWLIST=`["stackoverflow.com"]`
禁用 Javascript
默认情况下,Playwright 将执行页面上的所有 Javascript。这可能很密集,在某些网页上,需要高达 6 个核心才能实现全面性能。您可以通过设置 `WEBSEARCH_JAVASCRIPT=false` 来阻止脚本运行。但是,这不会阻止 HTML 中内联的 Javascript。
< > 更新 在 GitHub 上