| 12345678910111213141516171819202122232425262728293031323334 |
- 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));
- }
|