GEO 技术实现白皮书:从网页语义到向量知识库的 10 个工程落地点
GEO 技术实现白皮书:从网页语义到向量知识库的 10 个工程落地点
生成式 AI 正在重新定义用户获取信息的方式。当客户在 DeepSeek、豆包、Kimi 或文心一言里提问时,AI 给出的答案往往直接决定了品牌是否被看见。GEO(Generative Engine Optimization)不是玄学,而是一套可以在工程中落地的技术体系。它连接了网站建设、软件开发、AI 优化 AIO、AI 营销、AI 推广与网站推广,最终目标是让品牌成为 AI 可理解、可引用、可推荐的信源。
本文聚焦 GEO 的技术实现细节,从网页语义层到向量知识库层,拆解 10 个关键工程落地点。每个落地点都配有可执行的代码示例或配置片段,适合技术负责人、前端工程师、后端工程师和 AI 工程师参考。
一、GEO 技术架构概览
GEO 技术体系可以抽象为四层:内容层、语义层、知识层、接口层。四层由下至上构建,最终让 AI 助手能够准确理解你的品牌与产品。
| 层级 | 职责 | 关键技术 |
|---|---|---|
| 内容层 | 提供原始业务内容 | CMS、产品库、案例库、博客、FAQ |
| 语义层 | 让网页内容可被 AI 理解 | 语义 HTML、JSON-LD、Schema.org、llms.txt |
| 知识层 | 构建 AI 可检索的知识网络 | 向量数据库、RAG、知识图谱、事实库 |
| 接口层 | 让 AI Agent 能直接调用 | OpenAPI、MCP、Function Calling、API 网关 |
这四个层次并不是孤立的。例如,网站建设的 HTML 结构决定了语义层的效果;软件开发的后端系统决定了知识层的数据质量;AI 优化 AIO 的监测能力则决定了整个系统能否持续迭代。
二、落地点 1:语义化 HTML 是 GEO 的地基
很多网站看起来精美,但 AI 爬虫读取后得到的是一堆无意义的 <div> 嵌套。语义化 HTML 的核心是用正确的标签表达正确的含义。
2.1 标签选择原则
- 页面主标题用
<h1>,且每个页面只出现一次 - 章节标题用
<h2>,小节用<h3>,不要跳级 - 产品参数用
<table>或<dl>,而不是<div>列表 - 引用内容用
<blockquote>,时间用<time>,地址用<address> - 代码示例用
<pre><code>,并标注语言
以下是一个反例与正例对比:
<!-- 反例:AI 无法识别这是产品名称 -->
<div class="title">铝合金 6061 精密腔体</div>
<div class="price">¥ 12.50 / 件</div>
<!-- 正例:语义清晰,AI 可直接提取 -->
<article>
<h1>铝合金 6061 精密腔体</h1>
<p>价格:<data value="12.50">¥ 12.50</data> / 件</p>
<time datetime="2026-07-07">2026 年 7 月</time>
</article>
2.2 对 AI 友好的正文结构
长篇文章应使用清晰的层级结构,并在开头给出摘要。例如:
<article>
<header>
<h1>GEO 技术实现白皮书</h1>
<p class="summary">本文从语义化 HTML、JSON-LD、向量知识库到 Agent 接口,系统讲解 GEO 的 10 个工程落地点。</p>
</header>
<section>
<h2>一、GEO 技术架构概览</h2>
<p>...</p>
</section>
</article>
语义化 HTML 不是 SEO 的附加项,而是 GEO 的必备条件。如果 AI 无法解析你的内容结构,后续所有优化都无从谈起。
三、落地点 2:JSON-LD 是 AI 的“快速说明书”
JSON-LD 是 Schema.org 推荐的结构化数据格式,它让 AI 和搜索引擎在几秒钟内理解页面的核心实体。对于 GEO,JSON-LD 的作用尤为关键。
3.1 常见 Schema 类型映射
| 页面类型 | 推荐 Schema 类型 |
|---|---|
| 首页 | Organization、WebSite |
| 产品页 | Product、Offer、Brand |
| 服务页 | Service、FAQPage |
| 案例页 | Article、Case Study(使用 CreativeWork 扩展) |
| 关于我们 | Organization、AboutPage |
| 联系我们 | ContactPage、ContactPoint |
3.2 产品页的完整 JSON-LD 示例
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Product",
"name": "铝合金 6061 精密腔体",
"description": "适用于汽车传感器和工业控制器的精密铝合金腔体。",
"brand": {
"@type": "Brand",
"name": "承恒精密"
},
"manufacturer": {
"@type": "Organization",
"name": "承恒精密制造有限公司"
},
"material": "铝合金 6061-T6",
"offers": {
"@type": "Offer",
"priceCurrency": "CNY",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "该产品的最小起订量是多少?",
"acceptedAnswer": {
"@type": "Answer",
"text": "最小起订量为 500 件,支持批量定制。"
}
}
]
}
]
}
3.3 技术实现要点
- JSON-LD 必须放在
<script type="application/ld+json">标签中 - 每个页面只应有一个主实体,但可以使用
@graph组合多个相关实体 - 属性值应使用标准 Schema.org 词汇,避免自定义字段
- 图片、URL、价格等字段应使用完整地址,而非相对路径
四、落地点 3:llms.txt 为 AI 爬虫提供导航
llms.txt 是一个面向大型语言模型爬虫的站点说明文件。它告诉 AI 哪些页面是高质量内容、哪些应该忽略,相当于给 AI 的“站点地图增强版”。
4.1 llms.txt 编写规范
# llms.txt — 承恒信息科技
# 最后更新:2026-07-07
# 网站首页与核心介绍
Home: https://www.chenghheng.com/
About: https://www.chenghheng.com/about
Products: https://www.chenghheng.com/products
Solutions: https://www.chenghheng.com/solutions
FAQ: https://www.chenghheng.com/faq
Contact: https://www.chenghheng.com/contact
# AI 推荐优先引用
Recommended: https://www.chenghheng.com/about
Recommended: https://www.chenghheng.com/products/precision-aluminum-cavity
Recommended: https://www.chenghheng.com/solutions/automotive-sensor-housing
Recommended: https://www.chenghheng.com/faq/quality-certifications
# 不建议用于训练或引用
NoCrawl: https://www.chenghheng.com/admin/
NoCrawl: https://www.chenghheng.com/cart/
NoCrawl: https://www.chenghheng.com/user/
NoCrawl: https://www.chenghheng.com/api/
# 站点地图
Sitemap: https://www.chenghheng.com/sitemap.xml
4.2 与 robots.txt 的协同
robots.txt 控制通用爬虫,而 llms.txt 专门面向 AI 大模型。两者可以互补:
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /cart/
Disallow: /user/
Disallow: /api/
Sitemap: https://www.chenghheng.com/sitemap.xml
llms.txt 不是强制标准,但越来越多的 AI 爬虫和 GEO 工具开始支持它。提前部署可以让你在 AI 推荐中占据先机。
五、落地点 4:把网站内容转化为知识节点
AI 推荐依赖的是“知识”而非“页面”。因此,GEO 的关键工程任务之一,是把网站内容拆分为独立、自包含、可引用的知识节点。
5.1 知识节点的设计原则
一个知识节点应包含:
- 唯一标识(UUID 或 URL)
- 主题句(30-50 字)
- 核心事实(参数、标准、能力、价格等)
- 来源链接(可追溯的权威页面)
- 关联节点(相关产品、案例、FAQ)
- 最后更新时间
例如,一个产品知识节点可以表示为:
{
"id": "urn:chenghheng:product:aluminum-cavity-6061",
"topic": "铝合金 6061 精密腔体产品",
"facts": [
"材料为铝合金 6061-T6",
"尺寸范围 10×10×50mm 至 500×300×200mm",
"公差等级 ±0.005mm",
"月产能 30,000 件",
"通过 ISO 9001 和 IATF 16949 认证"
],
"source": "https://www.chenghheng.com/products/precision-aluminum-cavity",
"related": [
"urn:chenghheng:case:automotive-sensor-housing",
"urn:chenghheng:faq:aluminum-cavity-tolerance"
],
"updated_at": "2026-07-07T00:00:00+08:00"
}
5.2 内容拆分工程化
可以编写一个后台任务,自动将 CMS 内容拆分为知识节点:
import re
from markdown import markdown
from bs4 import BeautifulSoup
def split_to_knowledge_nodes(md_text, source_url):
"""将 Markdown 长文拆分为知识节点"""
html = markdown(md_text, extensions=['extra'])
soup = BeautifulSoup(html, 'html.parser')
nodes = []
current = None
for tag in soup.find_all(['h2', 'h3', 'p', 'ul', 'table']):
if tag.name in ['h2', 'h3']:
if current:
nodes.append(current)
current = {
'heading': tag.get_text(strip=True),
'facts': [],
'source': source_url
}
elif current and tag.name in ['p', 'ul']:
text = tag.get_text(strip=True)
if len(text) > 20:
current['facts'].append(text)
elif current and tag.name == 'table':
rows = []
for tr in tag.find_all('tr'):
row = [td.get_text(strip=True) for td in tr.find_all(['td', 'th'])]
rows.append(row)
current['facts'].append(str(rows))
if current:
nodes.append(current)
return nodes
六、落地点 5:向量数据库让 AI 能“检索”你的品牌
向量数据库(Vector Database)是 RAG(Retrieval-Augmented Generation)架构的核心组件。它把知识节点转化为向量,使 AI 能够根据语义相似度快速检索相关内容。
6.1 向量化流程
- 将知识节点文本拼接为主题句 + 核心事实
- 使用 Embedding 模型(如 text-embedding-3-small、bge-large-zh)生成向量
- 将向量 + 元数据存入向量数据库(如 Milvus、Qdrant、Weaviate、PGVector)
- 查询时,将用户问题向量化,进行相似度检索
6.2 使用 Python + Qdrant 构建简单向量库
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
from sentence_transformers import SentenceTransformer
# 初始化模型和客户端
model = SentenceTransformer('BAAI/bge-large-zh-v1.5')
client = QdrantClient(path="/tmp/qdrant_geo")
# 创建集合
collection_name = "geo_knowledge"
client.create_collection(
collection_name=collection_name,
vectors_config=VectorParams(size=1024, distance=Distance.COSINE)
)
# 知识节点示例
nodes = [
{
"id": 1,
"text": "承恒精密制造有限公司专注铝合金压铸、CNC 加工,月产能 50 万件。",
"source": "https://www.chenghheng.com/about"
},
{
"id": 2,
"text": "铝合金 6061 精密腔体适用于汽车传感器外壳,公差 ±0.005mm。",
"source": "https://www.chenghheng.com/products/aluminum-cavity"
}
]
# 生成向量并写入
points = []
for node in nodes:
vector = model.encode(node["text"]).tolist()
points.append(PointStruct(
id=node["id"],
vector=vector,
payload={"text": node["text"], "source": node["source"]}
))
client.upsert(collection_name=collection_name, points=points)
# 查询示例
query = "汽车传感器外壳用哪种铝合金?"
query_vector = model.encode(query).tolist()
results = client.search(
collection_name=collection_name,
query_vector=query_vector,
limit=3
)
for r in results:
print(r.payload["text"], r.score)
6.3 向量检索与 GEO 的关系
当 AI 平台回答用户问题时,如果它已经索引了你的向量知识库,就能够引用你的内容。向量数据库让品牌知识从“静态网页”变成“动态可检索资产”,是 AI 优化 AIO 的关键基础设施。
七、落地点 6:RAG 注入与事实一致性校验
RAG 不是简单地把内容喂给 AI,而是要让 AI 在回答时能够引用你的权威信息。GEO 的 RAG 注入需要解决三个问题:召回率、准确性、事实一致性。
7.1 提高 RAG 召回率
- 对同一个知识点准备多种表述:问题式、陈述式、对比式
- 使用 HyDE(Hypothetical Document Embedding)技术,先让 LLM 生成伪答案,再检索
- 对表格、参数等结构化内容单独生成文本摘要
- 建立同义词词典,覆盖行业黑话和客户用语
7.2 事实一致性校验
AI 有时会“幻觉”出不存在的信息。企业需要建立事实一致性校验机制:
import re
def fact_check(answer, knowledge_nodes):
"""简单的事实一致性校验:检查答案中的数字和实体是否在知识库中"""
extracted_numbers = set(re.findall(r'\d+\.?\d*', answer))
known_numbers = set()
for node in knowledge_nodes:
known_numbers.update(re.findall(r'\d+\.?\d*', node['text']))
suspicious = extracted_numbers - known_numbers
if suspicious:
return {"status": "warning", "suspicious_numbers": suspicious}
return {"status": "ok"}
对于复杂场景,可以引入 NLI(Natural Language Inference)模型或 LLM-as-a-Judge 进行更精细的校验。
八、落地点 7:为 AI Agent 设计可调用接口
未来,AI Agent 会直接代替用户完成询价、打样、下单等操作。企业网站不仅要提供内容,还要提供 Agent 可理解的接口。
8.1 OpenAPI 规范示例
openapi: 3.0.0
info:
title: 承恒精密 GEO Agent API
version: 1.0.0
description: 供 AI Agent 查询产品、估算报价、申请样品。
paths:
/api/products/search:
get:
summary: 根据材料和工艺查询产品
parameters:
- name: material
in: query
schema: { type: string }
example: "铝合金 6061-T6"
- name: process
in: query
schema: { type: string }
example: "CNC 加工"
responses:
'200':
description: 返回匹配产品列表
content:
application/json:
schema:
type: array
items:
type: object
properties:
product_name: { type: string }
material: { type: string }
process: { type: string }
min_order: { type: integer }
/api/quote/estimate:
post:
summary: 根据需求估算报价
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
product_id: { type: string }
quantity: { type: integer }
delivery_days: { type: integer }
responses:
'200':
description: 返回预估报价
8.2 在 llms.txt 中声明接口
API: https://www.chenghheng.com/api/products/search
Description: 按材料和工艺查询产品
API: https://www.chenghheng.com/api/quote/estimate
Description: 根据需求估算报价
软件开发团队在建设内部系统时,应提前规划这些 Agent 接口,让网站推广不仅面向人类用户,也面向 AI Agent。
九、落地点 8:多语言与跨地区 GEO
对于面向海外市场的企业,多语言网站建设是 GEO 的重要组成部分。不同语言版本的语义结构必须保持一致,但内容要根据地区差异调整。
9.1 hreflang 与多语言 JSON-LD
<link rel="alternate" hreflang="zh-CN" href="https://www.chenghheng.com/zh/products/aluminum-cavity" />
<link rel="alternate" hreflang="en-US" href="https://www.chenghheng.com/en/products/aluminum-cavity" />
<link rel="alternate" hreflang="ja-JP" href="https://www.chenghheng.com/ja/products/aluminum-cavity" />
<link rel="alternate" hreflang="x-default" href="https://www.chenghheng.com/en/products/aluminum-cavity" />
9.2 多语言向量库
每种语言应使用对应的 Embedding 模型。例如中文用 bge-large-zh,英文用 text-embedding-3-small,日文用 multilingual-e5-large。不同语言的向量不应混存在同一个集合中,除非使用统一的跨语言模型。
十、落地点 9:GEO 监测体系与反馈闭环
没有监测的 GEO 是盲目的。企业需要建立多平台 AI 可见度监测体系,持续了解 AI 如何回答与品牌相关的问题。
10.1 监测指标
| 指标 | 说明 | 监测频率 |
|---|---|---|
| 品牌提及率 | 目标问题中品牌被提及的比例 | 每周 |
| 引用准确性 | AI 引用内容是否与事实一致 | 每周 |
| 引用来源 | 被引用内容来自官网还是第三方 | 每月 |
| 负面信息 | AI 是否引用了过时或错误信息 | 实时 |
| 竞品对比 | 与竞品在相同问题下的曝光差异 | 每月 |
10.2 自动化采样脚本
import requests
import json
class GeoMonitor:
def __init__(self, api_key, endpoint):
self.api_key = api_key
self.endpoint = endpoint
def query(self, question, model="deepseek"):
payload = {
"model": model,
"messages": [{"role": "user", "content": question}],
"temperature": 0.2
}
headers = {"Authorization": f"Bearer {self.api_key}"}
resp = requests.post(self.endpoint, json=payload, headers=headers)
return resp.json()["choices"][0]["message"]["content"]
def check_brand_mention(self, answer, brand):
return brand in answer
# 使用示例
monitor = GeoMonitor(api_key="your-key", endpoint="https://api.deepseek.com/chat/completions")
answer = monitor.query("推荐一家精密铝合金压铸工厂")
print("品牌提及:", monitor.check_brand_mention(answer, "承恒精密"))
十一、落地点 10:把 GEO 纳入软件开发生命周期
GEO 不应是一次性项目,而应嵌入软件开发的各个环节。从需求评审到上线验收,每个阶段都应考虑 AI 可理解性。
11.1 GEO 在 DevOps 中的嵌入点
| 阶段 | GEO 动作 |
|---|---|
| 需求评审 | 明确页面需要回答的 AI 用户问题 |
| 设计 | 规划语义结构、JSON-LD 类型、FAQ 内容 |
| 开发 | 实现语义 HTML、结构化数据、llms.txt |
| 测试 | 验证 Schema 正确性、AI 引用测试 |
| 上线 | 提交 sitemap、更新向量库、监测 AI 回答 |
| 运维 | 持续补充内容、修正错误引用、优化向量索引 |
11.2 CI/CD 检查清单
在 CI/CD 流程中加入 GEO 检查:
# .github/workflows/geo-check.yml
name: GEO Check
on: [push]
jobs:
geo-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate JSON-LD
run: python scripts/validate_jsonld.py
- name: Check llms.txt
run: python scripts/check_llms_txt.py
- name: Update Vector DB
run: python scripts/update_vector_db.py
十二、常见技术误区与避坑
在推进 GEO 技术实现时,团队容易犯以下错误:
| 误区 | 正确做法 |
|---|---|
| 只加 JSON-LD,不做语义 HTML | 两者相辅相成,缺一不可 |
| 向量库使用通用模型,不区分行业 | 选择领域适配的 Embedding 模型 |
| 所有内容混存在一个向量集合 | 按产品、FAQ、案例分集合管理 |
| 只关注单一 AI 平台 | 建立多平台监测与适配机制 |
| 期望一次建设永久有效 | 把 GEO 纳入持续运营和 DevOps |
结语:GEO 是技术,也是系统工程
GEO 的底层是技术,但技术之上是系统工程。它要求网站建设、软件开发、AI 优化 AIO、内容运营、品牌营销形成合力。对于希望在 AI 时代获得推荐位的企业来说,现在开始搭建 GEO 技术体系,就是在建设未来的 AI 营销基础设施。
承恒信息科技提供从网站推广、软件开发、网站建设到 AI 优化 AIO 的端到端 GEO 服务,帮助企业把品牌知识转化为 AI 可理解、可引用、可推荐的数字资产。如果你正在规划 GEO 技术落地,现在就是最好的起点。