备选方案 E:创建 Qwen 查询配置文件
流程
raw chunkText
-> 请求 Qwen 生成用于搜索的 JSON
-> 使用生成的 JSON 进行 BM25/vector 搜索
-> 返回 JSONL 候选项示例输出
如果 Qwen 表现良好,可以像下面这样创建搜索 profile。
{
"search_intent": "Godot 4 2D player movement tutorial",
"important_literals": [
"Input.is_action_pressed",
"Vector2.ZERO",
"AnimatedSprite2D",
"position.clamp",
"screen_size"
],
"likely_doc_topics": [
"first 2D game",
"coding the player",
"player movement",
"clamp position to screen",
"play and stop AnimatedSprite2D"
],
"migration_signals": []
}优点
- 可以减少硬编码。
- 可以在复杂的块中概括意图。
- 可以让搜索词更易于人阅读。
- 可以将 Godot 上下文推理交给 Qwen。
缺点
- 速度慢。
- 成本高。
- 从搜索前阶段起就可能出现幻觉。
- 可能会产生没有 Qwen 的线索。
- 可能会生成错误的迁移意图,从而错误地拉取 api_mapping。
失败示例
基准块中有 AnimatedSprite2D,但如果 Qwen 像下面这样错误地概括,就会很危险。
{
"migration_intent": "Godot 3 to Godot 4 migration",
"important_terms": ["AnimatedSprite", "AnimatedSprite2D"]
}在这种情况下,这是正常的 Godot 4 代码,但可能会错误地拉取迁移映射。
PoC 模拟
先将基准 chunk 交给 Qwen,让它创建搜索配置文件。
输入:
SOURCE_CODE:
func _process(delta):
...
$AnimatedSprite2D.play()
position = position.clamp(Vector2.ZERO, screen_size)成功简介:
{
"search_intent": "Godot 4 2D player movement tutorial",
"important_literals": [
"Input.is_action_pressed",
"Vector2.ZERO",
"AnimatedSprite2D",
"position.clamp",
"screen_size"
],
"migration_signals": []
}如果使用此个人资料进行搜索,预期的候选人如下。
docs_chunks:
first_2d_game / coding_the_player
first_2d_game / clamp and screen bounds section
api_mapping:
几乎没有或低
label_prototypes:
几乎没有或低失败 profile:
{
"search_intent": "Godot 3 to Godot 4 migration",
"important_literals": [
"AnimatedSprite",
"AnimatedSprite2D",
"KinematicBody2D"
],
"migration_signals": ["AnimatedSprite to AnimatedSprite2D"]
}失败的配置文件为何危险:
SOURCE_CODE没有 AnimatedSprite。
SOURCE_CODE没有 KinematicBody2D。
SOURCE_CODE可能是符合 Godot 4 的正常代码。
但是如果 Qwen 创建 migration intent,可能会错误地搜索 api_mapping/label_prototypes。在 PoC 中确认的日志
Qwen 查询配置方式在搜索之前会介入 LLM,因此必须包含以下日志。
1. 原始 chunkText
2. Qwen 创建的 query profile JSON
3. 检查 profile 中的 important_literals 是否实际存在于 SOURCE_CODE 中
4. 检查 profile 中的 migration_signals 是否实际存在于 SOURCE_CODE 中
5. 使用 profile 搜索的候选项
6. 与使用原始 chunkText 搜索的候选项的差异眼前的结论:
如果 Qwen profile 显示良好,搜索词会更好看。
但是如果制造不存在的线索,搜索前阶段的结果会被污染。
因此,Qwen 在搜索后作为 validator 使用比搜索前更安全。判定
适用于搜索质量实验
作为生产第一搜索引擎需谨慎原始笔记的判断倾向于将 Qwen 用作搜索后直接证据验证器,而不是搜索前的查询生成器,这样更安全。