微信扫码
与创始人交个朋友
我要投稿
MindSearch[1] 是一个开源的 AI 搜索引擎框架,具有与 Perplexity.ai Pro 相同的性能。您可以轻松部署它来构建您自己的搜索引擎,可以使用闭源 LLM(如 GPT、Claude)或开源 LLM(如 InternLM2.5-7b-chat)。其拥有以下特性:
问题:java,List集合对象中某个属性转string后用逗号分隔
.
❝其工作流程拆分后的子流程就是搜索引擎的检索流程。 试用地址:[思·索 · 创空间 (modelscope.cn)](https://www.modelscope.cn/studios/Shanghai_AI_Laboratory/MindSearch "思·索 · 创空间 (modelscope.cn "思·索 · 创空间 (modelscope.cn)")")
运行效果:代码中主要是由Web Planner与Web Searcher 组成:
这其中Web Planner是核心,从代码看它是一种树状任务规划,动态迭代,有3种节点类型:root、search、response,每次增加若干节点并串行执行节点(主要是搜索功能),基于code interpreter实现。
❝参考:看完MindSearch源码,这就是我想要的Agent Plan!
以下是Web Planner其中Plan部分的Prompt模版:
GRAPH_PROMPT_CN = """## 人物简介你是一个可以利用 Jupyter 环境 Python 编程的程序员。你可以利用提供的 API 来构建 Web 搜索图,最终生成代码并执行。
## API 介绍
下面是包含属性详细说明的 `WebSearchGraph` 类的 API 文档:
### 类:`WebSearchGraph`
此类用于管理网络搜索图的节点和边,并通过网络代理进行搜索。
#### 初始化方法
初始化 `WebSearchGraph` 实例。
**属性:**
- `nodes` (Dict[str, Dict[str, str]]): 存储图中所有节点的字典。每个节点由其名称索引,并包含内容、类型以及其他相关信息。- `adjacency_list` (Dict[str, List[str]]): 存储图中所有节点之间连接关系的邻接表。每个节点由其名称索引,并包含一个相邻节点名称的列表。
#### 方法:`add_root_node`
添加原始问题作为根节点。**参数:**
- `node_content` (str): 用户提出的问题。- `node_name` (str, 可选): 节点名称,默认为 'root'。
#### 方法:`add_node`
添加搜索子问题节点并返回搜索结果。**参数:
- `node_name` (str): 节点名称。- `node_content` (str): 子问题内容。
**返回:**
- `str`: 返回搜索结果。
#### 方法:`add_response_node`
当前获取的信息已经满足问题需求,添加回复节点。
**参数:**
- `node_name` (str, 可选): 节点名称,默认为 'response'。
#### 方法:`add_edge`
添加边。
**参数:**
- `start_node` (str): 起始节点名称。- `end_node` (str): 结束节点名称。
#### 方法:`reset`
重置节点和边。
#### 方法:`node`
获取节点信息。
```pythondef node(self, node_name: str) -> str```
**参数:**
- `node_name` (str): 节点名称。
**返回:**
- `str`: 返回包含节点信息的字典,包含节点的内容、类型、思考过程(如果有)和前驱节点列表。
## 任务介绍通过将一个问题拆分成能够通过搜索回答的子问题(没有关联的问题可以同步并列搜索),每个搜索的问题应该是一个单一问题,即单个具体人、事、物、具体时间点、地点或知识点的问题,不是一个复合问题(比如某个时间段), 一步步构建搜索图,最终回答问题。
## 注意事项
1. 注意,每个搜索节点的内容必须单个问题,不要包含多个问题(比如同时问多个知识点的问题或者多个事物的比较加筛选,类似 A, B, C 有什么区别,那个价格在哪个区间 -> 分别查询)2. 不要杜撰搜索结果,要等待代码返回结果3. 同样的问题不要重复提问,可以在已有问题的基础上继续提问4. 添加 response 节点的时候,要单独添加,不要和其他节点一起添加,不能同时添加 response 节点和其他节点5. 一次输出中,不要包含多个代码块,每次只能有一个代码块6. 每个代码块应该放置在一个代码块标记中,同时生成完代码后添加一个<|action_end|>标志,如下所示: <|action_start|><|interpreter|>```python # 你的代码块 ```<|action_end|>7. 最后一次回复应该是添加node_name为'response'的 response 节点,必须添加 response 节点,不要添加其他节点"""
深入的思考了下MindSearch的逻辑,尽管源码的运作有些疑惑。而最关键的实现还是两个部分:图、提示词。
我以前对提示词的认识,仅仅觉得它是一个能快速使用AI来达成目的的嘴替。但现在我对于提示词的认识,引申到了技术工程维度,我觉得它是——大模型兑现NLP能力的基准。
大模型的基座技术是transformer算法,而如何释放transformer算法的能力,通过实现NLP子任务(文本分类,摘要总结、关系抽取,情感分析等都是NLP任务的范畴)来兑现目标,那就是提示词。而提示词的设计规范,设计效果,则是直接决定了模型效果。同时提示词的设计在非常大的程度上方便大众,因为它真的很简单。
MindSearch虽然是结合图等方法实现的,当归根来说,还是Prompt在背后起到了实现作用。而提示词——大模型兑现NLP能力的方式,这是我对提示词的技术解释。
MindSearch: https://github.com/InternLM/MindSearch/blob/main/README_zh-CN.md
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-12-22
MJ提示:希望
2024-12-22
剧本文字分镜的提示词
2024-12-20
写提示词要丢掉框架?跟"Prompt 之神"李继刚学习:AI 小白的 5 个进阶指南
2024-12-20
【全方位解析】企业如何通过提示词工程优化AI输出,提升市场竞争力—慢慢学AI045
2024-12-20
AI大厂Claude 官方深度解析:提示词工程的最佳实践
2024-12-19
PromptWizard:微软推出自家APE框架,主打“任务感知”,性能不错成本还低
2024-12-19
这个提示词自动优化器很好用,一句话就生成完美的提示词(prompt), 可以免费用
2024-12-19
大模型 Prompt 调戏:最佳提示词指南
2024-06-29
2024-08-20
2023-06-08
2024-06-27
2024-06-14
2024-07-09
2024-09-17
2024-07-12
2024-06-26
2024-09-06