import { config } from "../src/config/index.js"; import { embedTexts } from "../src/services/ollamaClient.js"; import { qdrant } from "../src/services/qdrantClient.js"; function isRefusalText(text) { const t = String(text ?? "").toLowerCase(); return ( t.includes("desculpe") && (t.includes("não posso") || t.includes("nao posso") || t.includes("não posso fornecer") || t.includes("nao posso fornecer")) ); } export async function searchDocs({ query, topK }) { const collectionName = config.qdrant.collection; const [vector] = await embedTexts([query]); const result = await qdrant.search(collectionName, { vector, limit: topK ?? config.rag.topK, with_payload: true, with_vector: false }); return (result ?? []) .map((r) => ({ score: r.score, id: r.id, text: r.payload?.text ?? "", source: r.payload?.source ?? null, chunkIndex: r.payload?.chunkIndex ?? null, metadata: r.payload?.metadata ?? null })) .filter((h) => !isRefusalText(h.text)); }