Improve LightRAG knowledge search locator alignment
This commit is contained in:
@@ -112,6 +112,21 @@ async function query(context, queryText, sourcePaths) {
|
||||
return result.payload;
|
||||
}
|
||||
|
||||
async function search(context, queryText, sourcePaths) {
|
||||
const result = await apiJson(context, "POST", `${BASE_URL}/api/knowledge-rag/search`, {
|
||||
rootUri: ROOT_URI,
|
||||
workspaceId: WORKSPACE_ID,
|
||||
query: queryText,
|
||||
mode: "mix",
|
||||
topK: 12,
|
||||
chunkTopK: 12,
|
||||
includeChunkContent: true,
|
||||
sourcePaths,
|
||||
});
|
||||
assert(result.ok, `knowledge-rag search 失败: ${result.status} ${result.text.slice(0, 1000)}`);
|
||||
return result.payload;
|
||||
}
|
||||
|
||||
async function deleteSource(context, sourcePath) {
|
||||
const result = await apiJson(context, "POST", `${BASE_URL}/api/knowledge-rag/delete-source`, {
|
||||
rootUri: ROOT_URI,
|
||||
@@ -146,6 +161,23 @@ async function main() {
|
||||
`sourcePaths scope 不应返回非 alpha 来源: ${JSON.stringify(references, null, 2).slice(0, 3000)}`,
|
||||
);
|
||||
assert(scoped.raw, "HTTP API 仍应保留 raw 供调试调用方使用");
|
||||
const searched = await search(context, marker, [sourceA]);
|
||||
const searchResults = Array.isArray(searched.results) ? searched.results : [];
|
||||
assert.equal(searched.schema, "mnote.knowledge_rag.search_results.v1", `search schema 不正确: ${JSON.stringify(searched, null, 2).slice(0, 3000)}`);
|
||||
assert.equal(searched.sourceScopeMode, "post_filter_mapped_references", `search sourceScopeMode 不正确: ${JSON.stringify(searched, null, 2).slice(0, 3000)}`);
|
||||
assert(searchResults.length > 0, `资料库 search 应至少返回 alpha: ${JSON.stringify(searched, null, 2).slice(0, 3000)}`);
|
||||
assert(
|
||||
searchResults.every((item) => item.provider === "lightrag" && item.matchSource === "lightrag_reference"),
|
||||
`资料库 search 结果必须来自 LightRAG references: ${JSON.stringify(searchResults, null, 2).slice(0, 3000)}`,
|
||||
);
|
||||
assert(
|
||||
searchResults.every((item) => item.path === sourceA),
|
||||
`资料库 search sourcePaths scope 不应返回非 alpha 来源: ${JSON.stringify(searchResults, null, 2).slice(0, 3000)}`,
|
||||
);
|
||||
assert(
|
||||
searchResults.some((item) => item.citationUrl || item.locator || item.openAction),
|
||||
`资料库 search 结果必须可打开来源: ${JSON.stringify(searchResults, null, 2).slice(0, 3000)}`,
|
||||
);
|
||||
|
||||
await deleteSource(context, sourceA);
|
||||
assert(fs.existsSync(path.join(ROOT_PATH, sourceA)), "delete-source 不应删除用户原始 source 文件");
|
||||
@@ -164,6 +196,7 @@ async function main() {
|
||||
sourceScopeMode: scoped.sourceScopeMode,
|
||||
rawScopeFiltered: scoped.rawScopeFiltered,
|
||||
scopedReferenceCount: references.length,
|
||||
searchResultCount: searchResults.length,
|
||||
alphaDocId: entryFor(indexedStatus, sourceA)?.lightRagDocId || null,
|
||||
betaDocId: entryFor(indexedStatus, sourceB)?.lightRagDocId || null,
|
||||
sourceAExistsAfterDelete: fs.existsSync(path.join(ROOT_PATH, sourceA)),
|
||||
|
||||
Reference in New Issue
Block a user