feat(web-search): implement two-phase smart search pipeline

Add metadata-first search approach followed by targeted scraping of top URLs. Includes:
- New `smartSearchRag` method in web search service
- Metadata-only search endpoint in Tauri backend
- Bulk URL scraping capability
- Payload content override in chat messages
This commit is contained in:
Evandro Fonseca Junior committed 2025-11-20 05:59:09 -03:00
1 parent 5c1a859925
commit c06e7ae5cf
6 files changed
+380 -10

No files matched your search

+6 -4
View File
@@ -154,10 +154,9 @@ export default function ChatPage() {
// Passo 2: Se precisar de busca, executar
if (searchQuery && searchQuery !== 'NO_SEARCH') {
setThinkingStep('searching');
// Buscar fontes usando configurações do store
// Pipeline em duas etapas: metadados → scraping de top URLs
const maxResults = settings.webSearch.maxResults;
const excludedDomains = settings.webSearch.excludedDomains;
scrapedSources = await webSearch.search(searchQuery, maxResults, excludedDomains);
scrapedSources = await webSearch.smartSearchRag(searchQuery, maxResults);
// Atualizar indicador enquanto lê fontes
setThinkingStep('reading');
@@ -301,7 +300,10 @@ Ao responder sobre fatos atuais ou notícias, inicie mencionando explicitamente
finalUserContent = `[CONTEXTO WEB OBRIGATÓRIO]\n${webContext}\n[/CONTEXTO WEB]\n\nCom base EXCLUSIVAMENTE no texto acima, responda: ${content}`;
}
await sendMessage(finalUserContent, selectedModel, enhancedSystemPrompt);
// Enviar o conteúdo original para UI, mas com override no payload para incluir contexto
await sendMessage(content, selectedModel, enhancedSystemPrompt, {
payloadContentOverride: finalUserContent,
});
// Marcar como completo quando começar a streamar
setTimeout(() => setThinkingStep('complete'), 100);