01.Ollama-Deep-Researcher

Ollama Deep Researcher 是一款完全本地化的网络研究助手,可使用Ollama托管的任何 LLM 。输入一个主题,它将生成网络搜索查询,收集网络搜索结果(默认通过Tavily),总结网络搜索结果,反思总结以检查知识差距,生成新的搜索查询以解决差距,搜索并改进总结,循环次数由用户定义。它将为用户提供最终的 markdown 摘要,其中包含所有使用的来源。

02.工作原理

Ollama Deep Researcher 的灵感来自IterDRAG。这种方法会将查询分解为子查询,检索每个子查询的文档,回答子查询,然后通过检索第二个子查询的文档来构建答案。在Ollama Deep Researcher,我们做类似的事情:

  • 给定用户提供的主题,使用本地 LLM(通过Ollama)生成网络搜索query

  • 使用搜索引擎(配置为DuckDuckGo、Tavily或Perplexity,本文推荐Tavily)查找相关来源

  • 使用 LLM 总结与用户提供的研究主题相关的网络搜索结果

  • 然后,利用LLM来反思总结,找出知识差距

  • LLM生成新的搜索查询来解决知识空白

  • 该过程不断重复,摘要会根据来自网络搜索的新信息不断更新

  • 运行可配置的迭代次数(见configuration标签)

03.本地Mac最佳实践

下载ollama并准备模型

点击ollama一键下载。下载后进行启用:

ollama serve

准备需要的模型,在魔搭社区的的模型页(https://modelscope.cn/models?name=gguf&page=1)或者ollama的模型页(https://ollama.com/search)中选择合适的的大模型

以QWQ 32B的模型为例,使用该模型:

ollama run modelscope.cn/Qwen/QwQ-32B-GGUF

 

下载并配置ollama-deep-researcher

下载ollama-deep-researcher代码库 :

git clone https://github.com/langchain-ai/ollama-deep-researcher.git
cd ollama-deep-researcher

 

创建环境变量文件.env,配置环境变量

cp .env.example .env

将下面的内容填入.env文件,其中:

OLLAMA_MODEL:使用的模型名称,可以换成你在ollama下载好的模型

SEARCH_API:查找网页使用的浏览器名称,从duckduckgo、tavily、perplexity中选一个,duckduckgo不需要API_KEY,其余两个需要前往对应网站获取API_KEY(由于网络限制,可以先在浏览器中测试是否能打开这几个网站)

OLLAMA_BASE_URL=http://localhost:11434                
OLLAMA_MODEL=qwq        
SEARCH_API=tavily
TAVILY_API_KEY=tvly-xxxxx
PERPLEXITY_API_KEY=pplx-xxxxx  
MAX_WEB_RESEARCH_LOOPS=3
FETCH_FULL_PAGE=

本文推荐的网络搜索工具为tavily:https://tavily.com/

04.使用 LangGraph 服务器开始运行

输入下面的命令开始运行:

curl -LsSf https://astral.sh/uv/install.sh | sh
uvx --refresh --from "langgraph-cli[inmem]" --with-editable . --python 3.11 langgraph dev

打开提示的本地网址127.0.0.1:2024,输入问题,开始分析吧~

05.输出

图表的输出是一个 markdown 文件,其中包含研究摘要以及所用来源的引用。

研究期间收集的所有来源都保存到图形状态中。

可以在图形状态中对它们进行可视化,可在 LangGraph Studio 中看到:

 

 

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐