问题所在
RAG应用只搜索本地文档索引时无法回答语料库之外的问题。用户问时事或公开信息时,系统要么幻觉要么拒绝回答。
Scavio 解决方案
实现混合检索策略:先搜索本地索引,如果最高结果的相关性评分低于阈值,降级到Scavio搜索API获取网络数据。来源标签支持准确的来源归因。
之前
混合方案之前,公司知识机器人只能回答内部文档问题。用户问"我们与[竞争对手]最新功能相比如何"时返回"我没有相关信息"。
之后
添加搜索API降级后,机器人先查内部文档。如果本地搜索置信度低,自动降级到Scavio获取公开信息。来源标签区分内部和外部数据。
适用人群
构建RAG应用并需要回答超出本地文档语料库问题的开发者。
核心优势
- 本地优先搜索保持大部分查询快速免费
- 搜索API降级覆盖语料库外的问题
- 相关性阈值防止不必要的API调用
- 上下文中的来源标签支持准确归因
- 优雅降级而非幻觉或拒绝
Python 示例
Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
CONFIDENCE_THRESHOLD = 0.7
def hybrid_retrieve(query: str, local_index) -> dict:
# Search local index first
local_results = local_index.search(query, top_k=3)
if local_results and local_results[0].score >= CONFIDENCE_THRESHOLD:
return {'source': 'local', 'results': [r.text for r in local_results]}
# Fallback to Scavio
resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=10)
web_results = resp.json().get('organic', [])[:3]
return {'source': 'web', 'results': [f"{r['title']}: {r['snippet']}" for r in web_results]}
# Use in RAG pipeline:
# context = hybrid_retrieve(user_question, my_meilisearch_index)
# prompt = f"Source: {context['source']}\n{chr(10).join(context['results'])}\nQuestion: {user_question}"JavaScript 示例
JavaScript
const CONFIDENCE_THRESHOLD = 0.7;
async function hybridRetrieve(query, localIndex) {
const localResults = await localIndex.search(query, { limit: 3 });
if (localResults.hits?.length && localResults.hits[0]._rankingScore >= CONFIDENCE_THRESHOLD) {
return { source: 'local', results: localResults.hits.map(h => h.content) };
}
const resp = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'google', query })
});
const data = await resp.json();
return { source: 'web', results: (data.organic || []).slice(0, 3).map(r => `${r.title}: ${r.snippet}`) };
}使用的平台
包含知识图谱、PAA和AI概览的网页搜索
来自任何subreddit的社区、帖子及线程评论
YouTube
包含转录和元数据的视频搜索