| 1234567891011121314151617181920212223242526272829303132 |
- import { config } from "../config/index.js";
- import { embedTexts } from "./ollamaClient.js";
- import { qdrant } from "./qdrantClient.js";
- export async function searchDocs({ query, topK, embedRole = "query", minScore, collectionName = config.qdrant.collection }) {
- const [vector] = await embedTexts([query], { role: embedRole });
- let result;
- try {
- result = await qdrant.search(collectionName, {
- vector,
- limit: topK ?? config.rag.topK,
- score_threshold: minScore ?? config.rag.minScore,
- with_payload: true,
- with_vector: false
- });
- } catch (err) {
- const status = err?.status ?? err?.statusCode ?? err?.response?.status ?? null;
- if (Number(status) === 404) return [];
- throw err;
- }
- 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
- }));
- }
|