AI in GTM 并不是一个停留在概念层面的方向。当 Notion 这类产品型 SaaS 公司开始招聘 AI Engineer 并明确要求候选人负责 AI in GTM 时,背后对应的是另一组具体问题:市场团队需要批量生成符合产品语感的内容,销售团队需要在通话前快速理解客户背景,客户成功团队要从大量用户反馈里识别风险信号和续约意向。这些问题都不能靠单个 Prompt 解决,而需要一条完整的数据、检索、生成、验证工程链路。
本文从 AI Engineer 的落地视角,先解释 GTM 场景为什么适合引入 AI,再搭建一个可运行的反馈分析助手。案例会覆盖环境准备、数据索引、向量检索、LLM 结构化输出、评估与排错,读者完成后可以把它迁移到销售线索分析、客户访谈总结、工单风险预警等真实业务中。
1. 为什么 GTM 场景需要 AI,AI Engineer 在这里做些什么
1.1 GTM 不是销售,而是产品进入市场的完整链路
GTM 是 Go-to-Market 的缩写,通常翻译为“上市策略”。它不只是一个营销计划,而是覆盖产品从准备推向市场、触达潜在用户、完成转化到持续续费的全过程。
在 SaaS 公司里,GTM 通常由三条线组成:
- 市场营销:负责官网内容、行业活动、产品案例、邮件触达、线索获取。
- 销售:负责线索跟进、客户演示、报价、合同谈判和关单。
- 客户成功:负责交付、培训、工单处理、续约和增购。
这三个角色看起来工作内容不同,但有一个共同点:他们都依赖大量文本信息。产品更新说明、用户访谈记录、销售通话转写、工单详情、邮件往来、竞品网页内容,都是典型的非结构化数据。传统做法是让运营人员手工整理、分类、查历史记录,这个过程的成本很高,而且知识往往沉淀在个人笔记和聊天记录里,团队之间无法复用。
AI 进入 GTM 的第一价值不是替代这些岗位,而是把“读取、检索、归纳、起草”这些高频低难度动作自动化,让人把时间花在真正需要判断和关系的环节上。
1.2 AI 在 GTM 中的四个典型切入点
在真实项目里,AI in GTM 不是做一个聊天机器人,而是做一组垂直的数据处理工具。常见场景可以分成四类:
| 场景 | GTM 业务目标 | AI 能力 | 典型工程组件 |
|---|---|---|---|
| 内容生成 | 快速产出官网文案、邮件、社媒内容 | 基于产品知识的可控文本生成 | Prompt 模板、RAG、人工审核流 |
| 意图识别与线索打分 | 判断某个用户是否值得销售跟进 | 对话摘要、关键信号抽取、预测评分 | LLM 分类、结构化输出、特征回传 |
| 销售与客户成功助手 | 帮助团队快速理解客户背景和历史 | 客户画像生成、相似案例检索、风险摘要 | 向量检索、知识库、权限控制 |
| 产品反馈洞察 | 从工单、访谈、社区反馈中定位共性问题 | 聚类、主题识别、情绪分析、风险预警 | 数据管道、Embedding、LLM 分析 |
四类场景的技术底座是重复的,都需要“数据清洗 + 向量化 + 检索 + 模型推理 + 结果校验”。这也解释了为什么同一个 AI Engineer 可以在不同 GTM 项目里复用经验。
1.3 AI Engineer 在 GTM 场景的职责边界
AI Engineer 不是研究岗位,而是工程化岗位。在 GTM 业务里,它的职责通常包括:
- 对接业务系统,抽取和清洗 GTM 团队使用的数据。
- 搭建索引和检索链路,保证模型能拿到正确上下文。
- 设计 Prompt 和结构化输出,让结果可以被业务系统直接消费。
- 建立评估集和监控,避免 AI 输出损害客户关系。
- 与销售、市场、客户成功负责人确认什么动作可以自动执行,什么动作必须人工审批。
相比传统后端工程师,AI Engineer 需要多懂语言模型和检索系统;相比算法工程师,它又需要更关注接口、权限、成本和业务指标。GTM 项目的特殊性在于,AI 的输出会直接面向客户或对内指导销售动作,因此错误容忍度很低,评估和守门机制必须从一开始就设计进去。
2. 从岗位要求反推技术栈:AI in GTM 涉及哪些关键技术
2.1 LLM 应用层与基础模型调用的区别
在 GTM 场景落地 AI,绝大多数项目不需要训练模型。它更接近一个应用层工程:把已经成熟的 LLM 能力封装成适合业务使用的服务。
应用层开发关注的是:
- 模型怎么选:商用 API 还是内部私有化模型。
- 上下文怎么构造:不是把全部资料塞给模型,而是只给与当前任务相关的片段。
- 输出怎么约束:要求模型返回 JSON、分类标签、风险等级等结构化数据。
- 异常怎么处理:网络超时、Token 超限、内容格式不符合预期。
这里的一个关键认知是:基础模型能力是商品化的,但业务价值来自数据组织和输出约束。同一个模型,在不同检索策略和 Prompt 设计下,生产效果差别很大。
2.2 RAG 是 GTM 场景最典型的 AI 落地方式
RAG(Retrieval-Augmented Generation,检索增强生成)是目前 GTM 场景里最稳妥的 AI 落地方式。它的思路很简单:先从一个外部知识库中检索和问题最相关的文档片段,再把这些片段作为上下文交给 LLM 生成回答。
为什么 GTM 场景特别适合 RAG?
- GTM 团队的知识库高度私有化,模型训练数据里不会包含你们公司的报价、客户案例和内部流程。
- 数据更新频繁。用 RAG 方式,新知识只写入索引库,不需要重新训练模型。
- 输出可追踪。模型参考了哪些片段可以被记录下来,出现问题时容易定位。
RAG 也不是万能的。如果原始文档质量低、切片策略不合理、检索结果不准确,最终输出照样不可靠。因此,RAG 项目的工程重点不只是写代码,还要评估检索质量和生成质量。
2.3 Agent、工作流和评估体系如何配合
很多团队一开始就想做 Agent,把任务完全交给模型自主判断。实际项目中,GTM 场景更适合先从“受控工作流”开始。
受控工作流的特征是:
- 步骤是固定的:读取输入 -> 检索知识库 -> 生成结果 -> 人工确认。
- 每个步骤的输入输出格式明确。
- 模型不需要自己决定调用哪个工具。
当业务逐步稳定后,再引入决策能力。例如,系统先从反馈中识别风险等级,如果风险等级为高,则自动调用工单系统创建跟进任务,否则只写入周报。这种设计把模型的判断放在一个有限的决策空间里,而不是让它完全自主行动。
评估体系要跟着工作流一起搭建。GTM 场景常用的评估方式包括:
- 测试集人工打分:准备典型输入和参考答案,观察输出质量。
- 自动评估:用 LLM 打分器评估相关性、完整度,或者校验 JSON 格式。
- 业务指标:邮件采纳率、反馈处理时长、线索转化率、客户续约率。
3. 最小可运行案例:给 GTM 团队做一个产品反馈分析助手
3.1 场景需求说明
本文要搭建的案例是“产品反馈分析助手”。业务目标是:当 GTM 团队收到一条新的用户反馈时,系统能自动找到历史相似反馈,并输出结构化分析结论,包括主题、情绪、风险等级、总结和建议动作。
这个能力在真实业务里很常用。例如,销售在跟进一个企业客户时,客户提到“导出功能很慢”,销售需要知道这个问题是长期存在的还是新出现的问题,是否有其他客户反映过,当前有没有临时方案。如果没有 AI 辅助,销售要手动翻工单、问产品、看群聊,效率很低。
为了使案例可运行,这里把数据做成 JSON 或 CSV 形式,代码使用 Python 编写。实际项目中可以把数据源替换为数据库、数仓或工单系统。
3.2 技术选型和环境准备
案例使用以下技术组合:
- Python 3.10 及以上版本。
- OpenAI API 提供 Embedding 和 Chat 模型。
- Chroma 作为本地向量数据库。
- LangChain 负责文档加载和检索链组装。
- Pydantic 定义结构化输出。
如果所在环境不允许调用外部 API,也可以把 OpenAI 相关模块替换为 Ollama 本地模型。代码框架不用改动太多。
依赖文件 requirements.txt 可以这样写:
openai==1.40.0 langchain-community==0.3.0 langchain-openai==0.2.0 chromadb==0.5.0 pandas==2.2.0 python-dotenv==1.0.0 pydantic==2.8.0本机安装依赖:
pip install -r requirements.txt然后在项目目录下创建.env文件:
OPENAI_API_KEY=你的APIKey注意:代码里的模型名称、API 地址和版本需要在真实项目里重新确认。文本给出的是一组可运行的示例,不代表所有环境都能直接复用。
3.3 数据结构和索引设计
反馈数据设计为四列核心字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 反馈唯一标识 |
| user_type | string | 用户类型,企业客户或个人用户 |
| channel | string | 来源渠道,工单、社区、销售访谈等 |
| content | string | 反馈正文 |
| created_at | string | 反馈时间 |
索引设计时,content作为向量化的主要字段,其他字段作为 metadata 保留。后续检索到某条反馈时,业务系统可以看到这条反馈来自哪个渠道、是什么用户类型。
3.4 索引构建代码
创建build_index.py,用于加载数据、切分文本、生成 Embedding 并写入 Chroma:
import os import pandas as pd from dotenv import load_dotenv from langchain_community.document_loaders import DataFrameLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import Chroma load_dotenv() PERSIST_DIR = "./gtm_feedback_db" EMBEDDING_MODEL = "text-embedding-3-small" CHUNK_SIZE = 600 CHUNK_OVERLAP = 100 def load_data(): # 实际项目这里建议从数据库或数仓读取 items = [ { "id": "F001", "user_type": "企业客户", "channel": "工单", "content": "批量导出超过 5000 行时会超时,影响月底运营报表生成。", "created_at": "2025-01-10", }, { "id": "F002", "user_type": "个人用户", "channel": "社区", "content": "模板市场很丰富,但缺少团队空间维度的权限模板。", "created_at": "2025-01-11", }, { "id": "F003", "user_type": "企业客户", "channel": "销售访谈", "content": "如果能把知识库直接同步进来,我们会考虑升级团队版。", "created_at": "2025-01-12", }, ] return pd.DataFrame(items) def build(): df = load_data() loader = DataFrameLoader(df, page_content_column="content") docs = loader.load() splitter = RecursiveCharacterTextSplitter( chunk_size=CHUNK_SIZE, chunk_overlap=CHUNK_OVERLAP, ) split_docs = splitter.split_documents(docs) embeddings = OpenAIEmbeddings(model=EMBEDDING_MODEL) vectordb = Chroma.from_documents( documents=split_docs, embedding=embeddings, persist_directory=PERSIST_DIR, ) print(f"index built: {len(split_docs)} chunks, persist to {PERSIST_DIR}") if __name__ == "__main__": build()运行:
python build_index.py正常情况下会看到类似输出:
index built: 3 chunks, persist to ./gtm_feedback_db这里要注意几个点:
DataFrameLoader会把content以外的列自动保留为 metadata。上面的示例里,user_type、channel、created_at都会作为 metadata 存在。- 分块参数在示例数据上作用不明显,但真实工单往往有几百到几千字,分块策略会影响检索精度。
- 同一个
PERSIST_DIR路径不能同时被多个进程写入,否则可能产生锁问题。
3.5 反馈分析代码
创建analyze_feedback.py,用于接收一条新的用户反馈,检索历史相似内容,并让 LLM 输出结构化结果:
import json from dotenv import load_dotenv from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_community.vectorstores import Chroma from langchain_core.prompts import ChatPromptTemplate from pydantic import BaseModel, Field load_dotenv() PERSIST_DIR = "./gtm_feedback_db" EMBEDDING_MODEL = "text-embedding-3-small" LLM_MODEL = "gpt-4o-mini" TOP_K = 3 class GTMInsight(BaseModel): theme: str = Field(description="反馈主题,例如性能问题、权限需求、集成需求") sentiment: str = Field(description="情绪倾向,取值为正向、中性、负向") risk_level: str = Field(description="风险等级,取值必须为低、中、高") summary: str = Field(description="一句话总结当前反馈") suggested_action: str = Field(description="对 GTM 团队的建议动作") PROMPT = ChatPromptTemplate.from_messages([ ("system", "你是 GTM 团队的数据分析助手。基于检索到的历史反馈分析当前反馈,不要编造历史记录中不存在的信息。"), ("human", "当前反馈:{feedback}\n\n历史相似反馈:{context}\n\n请按照给定结构输出 JSON 结果。"), ]) def analyze(feedback: str) -> str: embeddings = OpenAIEmbeddings(model=EMBEDDING_MODEL) vectordb = Chroma( persist_directory=PERSIST_DIR, embedding_function=embeddings, ) docs = vectordb.similarity_search(feedback, k=TOP_K) context = "\n".join([f"{doc.metadata.get('id')}: {doc.page_content}" for doc in docs]) llm = ChatOpenAI(model=LLM_MODEL, temperature=0, max_tokens=800) chain = PROMPT | llm.with_structured_output(GTMInsight) insight = chain.invoke({"feedback": feedback, "context": context}) return json.dumps(insight.dict(), ensure_ascii=False, indent=2) if __name__ == "__main__": feedback = "企业版用户在导出大表格时频繁报错,销售那边已经收到两个续约风险预警。" print(analyze(feedback))运行:
python analyze_feedback.py预期会输出类似这样的 JSON:
{ "theme": "性能问题", "sentiment": "负向", "risk_level": "高", "summary": "企业版用户批量导出大表格时频繁报错,已出现续约风险。", "suggested_action": "建议销售团队先确认受影响客户范围,并推动产品团队定位导出超时原因。" }3.6 运行验证和人工检查重点
代码跑通只是第一步。真实项目里还需要人工验证以下几点:
- 检索到的历史反馈是否真的和当前反馈相关。如果检索结果无关,说明索引或分块有问题。
- 模型输出的风险等级是否合理。GTM 场景中“高”风险不能只由模型单方面决定,应有确认机制。
- JSON 结构是否稳定。如果模型偶尔不按结构输出,要增加重试或格式校验逻辑。
- 不同输入下结果是否稳定。同一类反馈连续输入多次,结论不应大幅漂移。
建议准备至少 20 条典型输入做人工检查,不要只测试一条样例就认为任务完成。
4. 关键参数与配置详解:让分析和回复更可控
4.1 LLM 参数对 GTM 输出质量的影响
在 GTM 场景中,模型输出直接面对客户或销售,稳定性比创造性更重要。
| 参数 | 作用 | 调大影响 | 调小影响 | GTM 场景推荐 |
|---|---|---|---|---|
| temperature | 控制输出随机性 | 表达更多样,但错误率升高 | 更稳定,偏向保守表达 | 分析任务 0 到 0.3 |
| top_p | 核采样阈值,控制候选词范围 | 输出更丰富 | 输出更聚焦 | 一般与 temperature 二选一 |
| max_tokens | 限制生成长度 | 可生成更长文本,成本上升 | 可能截断关键结论 | 根据输出结构设置,不宜过长 |
| presence_penalty | 增加话题覆盖度 | 避免重复,但可能跑题 | 更聚集主题 | GTM 摘要任务默认即可 |
一个常见误区是:为了让内容“像人写的”,把 temperature 调得很高。对销售邮件这类任务可以稍微放开,但对风险判断、分类标签这类任务,宁可保守一点。
4.2 RAG 参数:chunk_size、overlap、top_k 和 score_threshold
RAG 的效果很大程度由检索参数决定。
| 参数 | 含义 | 推荐起点 | 调大影响 | 调小影响 |
|---|---|---|---|---|
| chunk_size | 每个文档切片的字符数 | 500 到 800 | 上下文更完整,但噪声增加 | 检索更精准,但信息可能不完整 |
| chunk_overlap | 相邻切片的重叠字符数 | 50 到 150 | 减少信息断裂,但索引更大 | 索引更小,但容易切断语义 |
| top_k | 检索返回的片段数 | 3 到 5 | 信息更全,Token 消耗增大 | 上下文更干净,但可能遗漏关键信息 |
| score_threshold | 相似度阈值,低于阈值不返回 | 根据具体模型调整 | 过滤噪声,但可能无结果 | 检索更多,但可能引入不相关内容 |
在 GTM 场景里,top_k 对 Token 成本影响最明显。每次检索返回 5 个片段,每个片段 800 字,上下文就会增加约 4000 字。如果一次分析要处理大量反馈,成本会成倍增长。
4.3 系统提示词与结构化输出设计
系统提示词要明确四个要素:角色、任务、输入、输出约束。
一个适合反馈分析任务的提示词模板:
你是 GTM 团队的数据分析助手。 任务:基于检索到的历史反馈,分析当前用户反馈的主题、情绪、风险等级,并给出一条建议动作。 要求: 1. 只能使用检索到的历史反馈作为判断依据。 2. 如果历史反馈中没有相关信息,不要编造。 3. risk_level 只能取低、中、高。 4. suggested_action 要具体,能直接交给销售或客户成功人员执行。结构化输出可以让业务系统直接消费结果。使用 Pydantic 定义输出结构的好处是:
- 字段名称和类型在代码里可见。
- 模型输出不符合结构时,LangChain 会尝试修正或报错。
- 后续可以把结果直接写入数据库,不需要再做字符串解析。
5. GTM AI 系统上线前必须处理的工程问题
5.1 幻觉控制:最影响客户信任的问题
LLM 幻觉在 GTM 场景中后果很严重。销售可能因为 AI 生成的错误信息向客户做出超出产品能力的承诺,客户成功人员可能根据错误风险判断漏掉续约预警。
降低幻觉的核心策略:
- 在提示词中强制要求“不知道就说明不知道”。
- 让模型输出引用来源,例如返回历史反馈 ID。
- 高风险结论启用人工确认,不让模型直接触发外部动作。
- 用测试集持续回归,发现常见幻觉模式后修正 Prompt 或检索策略。
下面的输出片段展示了一种理想方式:
{ "summary": "企业版用户反馈导出超时,历史反馈中 F001 提到过同类问题。", "referenced_ids": ["F001"], "risk_level": "高" }如果模型在输出中没有引用历史反馈 ID,系统可以判定其结论可信度较低。
5.2 权限与数据安全:GTM 数据往往涉及客户隐私
GTM 数据天然包含敏感信息:客户组织名称、联系人姓名、合同金额、续约时间。把这类数据直接发送给外部模型接口前,需要先确认所在组织的合规要求。
常见工程处理方式:
- 脱敏:在送入模型前把客户名称、邮箱、电话替换为占位符。
- 最小化:只传入与当前任务相关的字段,不传整张客户表。
- 私有化部署:如果合规允许且数据敏感度极高,可以在内网部署开源模型和向量库。
- 权限控制:不同角色只能访问不同知识库。销售不能查看客户成功团队的内部风险笔记,产品团队看不到报价细节。
权限设计要渗透到检索层,而不是只在前端隐藏按钮。否则下层 API 或模型调用者仍可以绕过 UI 获取数据。
5.3 延迟、成本、限流与监控
GTM 工具是要给人用的。销售在客户通话结束后需要尽快拿到纪要摘要,如果等待 30 秒,体验就会很差。因此延迟是一个核心指标。
优化延迟的常用手段:
- 使用流式输出,让用户先看到首字。
- 检索阶段给向量数据库加索引,缩短查询时间。
- 把生成结果缓存起来,同一问题重复提问时直接返回。
- 对耗时的分析任务使用异步队列,完成后通过消息通知用户。
成本控制方面,需要记录每次调用的:
- 模型名称。
- 输入 Token 数和输出 Token 数。
- 命中的缓存数和未命中的缓存数。
- 单客户或单团队维度消耗。
部分模型平台会按账户或者项目分配额度,这个额度有时被称为 credits。在真实项目里,要区分“额度消耗”和“业务价值”,优先保证高价值客户分析任务有足够预算。
监控层面至少要做到:链路追踪、错误日志、Token 消耗统计、输出质量抽检告警。
6. 常见问题排查清单:从现象倒推根因
6.1 回答内容与知识库不符
| 问题现象 | 常见原因 | 检查方式 | 处理建议 |
|---|---|---|---|
| 输出包含知识库中不存在的信息 | 提示词没有限制来源 | 查看 Prompt 中是否要求基于上下文回答 | 增加“只基于检索内容”的约束 |
| 输出引用了一个不存在的客户案例 | 检索到相似片段后模型过度联想 | 检查上下文片段内容和检索得分 | 降低 temperature,要求模型引用来源 |
| 多次运行同一输入结果不稳定 | 随机参数过高 | 调整 temperature 和 top_p | 分析类任务将 temperature 设为 0 |
建议在测试集中加入“无答案样本”,测试模型是否会在没有相关信息时编造答案。理想输出应该是“历史反馈中未找到相关信息”。
6.2 检索不到相关上下文
| 问题现象 | 常见原因 | 检查方式 | 处理建议 |
|---|---|---|---|
| 相似度得分很低 | chunk 太大或太小 | 打印检索到的片段内容 | 调整 chunk_size 和 overlap |
| 检索结果和问题无关 | 索引和查询使用的 Embedding 模型不一致 | 对比两个调用的 model 参数 | 确保索引和查询使用同一个 Embedding 模型 |
| 明明有文档但检索不到 | 文档没有被写入向量库 | 检查 build_index.py 输出和持久化目录 | 重新构建索引并确认 chunk 数量 |
| 设置阈值后结果为空 | score_threshold 过高 | 打印所有候选得分 | 先不设置阈值观察得分分布,再确定阈值 |
这里最容易被忽略的是 Embedding 模型不一致。如果 build_index.py 使用text-embedding-3-small,analyze 脚本却改成了别的模型,向量空间完全不同,检索结果会不可用。
6.3 token 超限和成本暴涨
| 问题现象 | 常见原因 | 检查方式 | 处理建议 |
|---|---|---|---|
| 请求报 context_length_exceeded | 上下文超长 | 打印发送给模型的完整消息长度 | 调小 chunk_size,或控制 top_k |
| 单次分析成本很高 | 每次都传入大量历史记录 | 统计每轮调用 Token 数 | 只保留相关性最高的片段 |
| 接口限流频繁 | 并发请求过多或缺少缓存 | 查看限流错误码和调用频率 | 增加缓存、批量处理、退避重试 |
| 调试时成本不可控 | 每次测试都调用完整链路 | 检查是否打印了所有中间结果 | 测试阶段使用 Mini 模型,或加白名单 |
一个实用做法是在代码里封装一个 token 计数函数。每次调用前后记录 token 消耗,并输出到日志。成本异常时,先看日志,再看是否有人在循环里调用了模型。
6.4 人工评估与自动评估怎么配合
自动评估适合发现格式错误和明显跑题,人工评估适合处理开放性问题和风险判断。
建议流程:
- 每周抽取 20 到 50 条真实输出。
- 由 GTM 业务人员标注“可采纳、需修改、不可用”三档。
- 将标注结果写回评估数据集。
- 修改提示词或检索策略后,用同一套数据做回归测试。
- 对风险等级为“高”的输出,人工复核率必须达到 100%。
这套流程虽然简单,但能避免“模型现在看着挺聪明”这种没有依据的结论。
7. 面向产品和 GTM 团队的最佳实践与落地路径
7.1 先做单点工具,再做系统 Agent
很多团队在立项时直接想做“AI 销售助手”或“AI 市场运营 Agent”。这类项目范围太大,边界模糊,很难验证效果。
更稳妥的路径是:
- 先选一个痛点最痛、数据最完整的单点,比如“反馈风险识别”。
- 用 RAG 搭建最小功能,让销售或客户成功团队试用。
- 上线后跟踪采纳率和处理时长。
- 稳定后再增加自动动作,比如高风险自动创建跟进任务。
- 当任务流程复杂到需要模型自己做判断和调工具时,再引入 Agent 机制。
判断是否需要 Agent 的标准很简单:固定工作流能不能解决?能解决就不要引入额外复杂度。
7.2 建立反馈闭环:从用户点击到业务结果
AI 工具的最终价值要用业务结果衡量。GTM 场景建议追踪以下指标:
| 指标 | 说明 |
|---|---|
| 生成内容采纳率 | 销售或客户成功人员是否直接使用输出 |
| 处理耗时变化 | 反馈分析或客户摘要任务缩短了多少时间 |
| 线索转化率 | 使用 AI 辅助后线索到商机的转化是否提升 |
| 人工大改比例 | 输出被多少人修改后才能使用 |
| 高风险识别准确率 | 模型识别出的高风险反馈中,多少被人工确认有效 |
只需要在界面上增加“采纳”和“不采纳”两个按钮,就能长期积累标注数据,比手动收集评估集更自然。
7.3 在 GTM 方向持续提升的工程路径
对想往 AI in GTM 方向发展的开发者,建议按这个顺序练习:
- 完成一个 RAG 案例,熟悉文档加载、切片、向量化、检索全链路。
- 给输出加结构化约束,练习 Pydantic 或 JSON Schema。
- 准备一个包含 50 条左右样本的小型评估集,学会量化质量。
- 接入真实业务数据,处理权限、成本、延迟和监控问题。
- 最后再考虑 Agent 化,让模型在有限决策空间里调用工具。
技术栈方面,Python 生态的 LangChain、LlamaIndex 比较成熟,适合快速验证。如果团队后端是 Java,可以关注 Spring AI,它提供了类似的模型调用、提示词和结构化输出能力。选型时不要追求框架多,而要看团队能否理解底层调用链路。
AI in GTM 的本质,不是把营销和销售团队替换成 AI,而是在数据、内容、客户的交汇点建立可复用、可评估的工程能力。如果只看岗位名称,容易把 AI Engineer 理解成写 Prompt 的人。真正进入项目之后,大部分时间其实花在数据清洗、检索调优、权限控制和上线监控上。以 Notion 这类产品为背景的岗位要求,反映的是一个共同信号:AI 能力要嵌入到业务流程里,而不是作为独立 demo 存在。对于想往这个方向走的开发者,最值得做的第一件事,是找一批真实的 GTM 数据,把一个单点分析工具从头跑到上线,再回来审视检索质量、成本和错误率。