@cosmocoder/mcp-web-docs 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +132 -10
- package/build/crawler/auth.d.ts +17 -6
- package/build/crawler/auth.js +166 -31
- package/build/crawler/auth.js.map +1 -1
- package/build/crawler/auth.test.js +197 -33
- package/build/crawler/auth.test.js.map +1 -1
- package/build/index.js +68 -16
- package/build/index.js.map +1 -1
- package/build/index.test.js +134 -0
- package/build/index.test.js.map +1 -1
- package/build/storage/storage.d.ts +17 -0
- package/build/storage/storage.js +102 -5
- package/build/storage/storage.js.map +1 -1
- package/build/storage/storage.test.js +91 -0
- package/build/storage/storage.test.js.map +1 -1
- package/build/types.d.ts +4 -0
- package/build/util/security.js +8 -0
- package/build/util/security.js.map +1 -1
- package/build/util/security.test.js +18 -0
- package/build/util/security.test.js.map +1 -1
- package/package.json +11 -2
- package/build/crawler/cheerio.d.ts +0 -11
- package/build/crawler/cheerio.js +0 -134
- package/build/crawler/cheerio.js.map +0 -1
- package/build/crawler/chromium.d.ts +0 -21
- package/build/crawler/chromium.js +0 -596
- package/build/crawler/chromium.js.map +0 -1
- package/build/crawler/default.d.ts +0 -11
- package/build/crawler/default.js +0 -138
- package/build/crawler/default.js.map +0 -1
- package/build/crawler/factory.d.ts +0 -6
- package/build/crawler/factory.js +0 -83
- package/build/crawler/factory.js.map +0 -1
- package/build/crawler/puppeteer.d.ts +0 -16
- package/build/crawler/puppeteer.js +0 -191
- package/build/crawler/puppeteer.js.map +0 -1
- package/build/embeddings/openai.d.ts +0 -8
- package/build/embeddings/openai.js +0 -56
- package/build/embeddings/openai.js.map +0 -1
- package/build/rag/cache.d.ts +0 -10
- package/build/rag/cache.js +0 -10
- package/build/rag/cache.js.map +0 -1
- package/build/rag/code-generator.d.ts +0 -11
- package/build/rag/code-generator.js +0 -30
- package/build/rag/code-generator.js.map +0 -1
- package/build/rag/context-assembler.d.ts +0 -23
- package/build/rag/context-assembler.js +0 -113
- package/build/rag/context-assembler.js.map +0 -1
- package/build/rag/docs-search.d.ts +0 -55
- package/build/rag/docs-search.js +0 -380
- package/build/rag/docs-search.js.map +0 -1
- package/build/rag/pipeline.d.ts +0 -26
- package/build/rag/pipeline.js +0 -91
- package/build/rag/pipeline.js.map +0 -1
- package/build/rag/query-processor.d.ts +0 -14
- package/build/rag/query-processor.js +0 -57
- package/build/rag/query-processor.js.map +0 -1
- package/build/rag/reranker.d.ts +0 -55
- package/build/rag/reranker.js +0 -210
- package/build/rag/reranker.js.map +0 -1
- package/build/rag/response-generator.d.ts +0 -20
- package/build/rag/response-generator.js +0 -101
- package/build/rag/response-generator.js.map +0 -1
- package/build/rag/retriever.d.ts +0 -19
- package/build/rag/retriever.js +0 -111
- package/build/rag/retriever.js.map +0 -1
- package/build/rag/validator.d.ts +0 -22
- package/build/rag/validator.js +0 -128
- package/build/rag/validator.js.map +0 -1
- package/build/rag/version-manager.d.ts +0 -23
- package/build/rag/version-manager.js +0 -98
- package/build/rag/version-manager.js.map +0 -1
- package/build/types/rag.d.ts +0 -27
- package/build/types/rag.js +0 -2
- package/build/types/rag.js.map +0 -1
- package/build/util/content-utils.d.ts +0 -31
- package/build/util/content-utils.js +0 -120
- package/build/util/content-utils.js.map +0 -1
- package/build/util/content.d.ts +0 -1
- package/build/util/content.js +0 -16
- package/build/util/content.js.map +0 -1
- package/build/util/site-detector.d.ts +0 -22
- package/build/util/site-detector.js +0 -42
- package/build/util/site-detector.js.map +0 -1
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
export class ContextAssembler {
|
|
2
|
-
async assembleContext(chunks) {
|
|
3
|
-
// Group chunks by type
|
|
4
|
-
const groups = this.groupChunksByType(chunks);
|
|
5
|
-
// Extract relationships between chunks
|
|
6
|
-
const relationships = this.extractRelationships(chunks);
|
|
7
|
-
// Build hierarchical context
|
|
8
|
-
const hierarchicalContext = this.buildHierarchy(groups);
|
|
9
|
-
// Consolidate metadata
|
|
10
|
-
const metadata = this.consolidateMetadata(chunks);
|
|
11
|
-
return {
|
|
12
|
-
hierarchicalContext,
|
|
13
|
-
relationships,
|
|
14
|
-
metadata
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
groupChunksByType(chunks) {
|
|
18
|
-
const groups = new Map();
|
|
19
|
-
for (const chunk of chunks) {
|
|
20
|
-
const type = chunk.metadata.type || 'overview';
|
|
21
|
-
if (!groups.has(type)) {
|
|
22
|
-
groups.set(type, { type, chunks: [] });
|
|
23
|
-
}
|
|
24
|
-
groups.get(type).chunks.push(chunk);
|
|
25
|
-
}
|
|
26
|
-
return groups;
|
|
27
|
-
}
|
|
28
|
-
extractRelationships(chunks) {
|
|
29
|
-
const relationships = [];
|
|
30
|
-
// Collect all relationships from chunks
|
|
31
|
-
for (const chunk of chunks) {
|
|
32
|
-
if (chunk.relationships) {
|
|
33
|
-
relationships.push(...chunk.relationships);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
// Remove duplicates
|
|
37
|
-
return this.deduplicateRelationships(relationships);
|
|
38
|
-
}
|
|
39
|
-
buildHierarchy(groups) {
|
|
40
|
-
const hierarchy = [];
|
|
41
|
-
// Start with overview chunks
|
|
42
|
-
if (groups.has('overview')) {
|
|
43
|
-
hierarchy.push(...groups.get('overview').chunks);
|
|
44
|
-
}
|
|
45
|
-
// Add API documentation
|
|
46
|
-
if (groups.has('api')) {
|
|
47
|
-
hierarchy.push(...groups.get('api').chunks);
|
|
48
|
-
}
|
|
49
|
-
// Add usage examples
|
|
50
|
-
if (groups.has('usage')) {
|
|
51
|
-
hierarchy.push(...groups.get('usage').chunks);
|
|
52
|
-
}
|
|
53
|
-
// Add code examples
|
|
54
|
-
if (groups.has('example')) {
|
|
55
|
-
hierarchy.push(...groups.get('example').chunks);
|
|
56
|
-
}
|
|
57
|
-
return hierarchy;
|
|
58
|
-
}
|
|
59
|
-
consolidateMetadata(chunks) {
|
|
60
|
-
const topics = new Set();
|
|
61
|
-
const prerequisites = new Set();
|
|
62
|
-
const frameworks = new Set();
|
|
63
|
-
const languages = new Set();
|
|
64
|
-
let maxComplexity = 'basic';
|
|
65
|
-
for (const chunk of chunks) {
|
|
66
|
-
// Collect topics from semantic tags
|
|
67
|
-
chunk.metadata.semanticTags?.forEach(tag => topics.add(tag));
|
|
68
|
-
// Collect prerequisites
|
|
69
|
-
chunk.metadata.prerequisites?.forEach(prereq => prerequisites.add(prereq));
|
|
70
|
-
// Track frameworks and languages
|
|
71
|
-
if (chunk.metadata.framework)
|
|
72
|
-
frameworks.add(chunk.metadata.framework);
|
|
73
|
-
if (chunk.metadata.language)
|
|
74
|
-
languages.add(chunk.metadata.language);
|
|
75
|
-
// Determine highest complexity
|
|
76
|
-
if (chunk.metadata.complexity === 'advanced' ||
|
|
77
|
-
(chunk.metadata.complexity === 'intermediate' && maxComplexity === 'basic')) {
|
|
78
|
-
maxComplexity = chunk.metadata.complexity;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Generate a summary based on the most relevant chunks
|
|
82
|
-
const summary = this.generateSummary(chunks);
|
|
83
|
-
return {
|
|
84
|
-
summary,
|
|
85
|
-
topics: Array.from(topics),
|
|
86
|
-
complexity: maxComplexity,
|
|
87
|
-
prerequisites: Array.from(prerequisites),
|
|
88
|
-
frameworks: Array.from(frameworks),
|
|
89
|
-
languages: Array.from(languages)
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
generateSummary(chunks) {
|
|
93
|
-
// Sort chunks by relevance (using sourceReliability as a proxy)
|
|
94
|
-
const sortedChunks = [...chunks].sort((a, b) => (b.metadata.sourceReliability || 0) - (a.metadata.sourceReliability || 0));
|
|
95
|
-
// Take the most relevant chunks' summaries
|
|
96
|
-
const summaries = sortedChunks
|
|
97
|
-
.slice(0, 3)
|
|
98
|
-
.map(chunk => chunk.metadata.contextualSummary || '')
|
|
99
|
-
.filter(Boolean);
|
|
100
|
-
return summaries.join(' ');
|
|
101
|
-
}
|
|
102
|
-
deduplicateRelationships(relationships) {
|
|
103
|
-
const seen = new Set();
|
|
104
|
-
return relationships.filter(rel => {
|
|
105
|
-
const key = `${rel.sourceComponent}-${rel.targetComponent}-${rel.type}`;
|
|
106
|
-
if (seen.has(key))
|
|
107
|
-
return false;
|
|
108
|
-
seen.add(key);
|
|
109
|
-
return true;
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=context-assembler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-assembler.js","sourceRoot":"","sources":["../../src/rag/context-assembler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { DocumentStore } from "../storage/storage.js";
|
|
2
|
-
import { EmbeddingsProvider } from "../embeddings/types.js";
|
|
3
|
-
export interface DocsSearchResult {
|
|
4
|
-
answer: string;
|
|
5
|
-
codeExamples: string[];
|
|
6
|
-
componentDetails: any[];
|
|
7
|
-
validation: {
|
|
8
|
-
factCheck: boolean;
|
|
9
|
-
codeCheck: boolean;
|
|
10
|
-
consistencyCheck: boolean;
|
|
11
|
-
details: string[];
|
|
12
|
-
};
|
|
13
|
-
limitations: string[];
|
|
14
|
-
}
|
|
15
|
-
export interface DocsSearchOptions {
|
|
16
|
-
urls: string[];
|
|
17
|
-
componentNames?: string[];
|
|
18
|
-
propNames?: string[];
|
|
19
|
-
strictMode?: boolean;
|
|
20
|
-
maxSourceChunks?: number;
|
|
21
|
-
advanced?: {
|
|
22
|
-
useQueryExpansion?: boolean;
|
|
23
|
-
useMultiQuery?: boolean;
|
|
24
|
-
maxQueryVariations?: number;
|
|
25
|
-
mergeUrlResults?: boolean;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export declare class DocsSearch {
|
|
29
|
-
private queryProcessor;
|
|
30
|
-
private contextRetriever;
|
|
31
|
-
private contextAssembler;
|
|
32
|
-
private responseGenerator;
|
|
33
|
-
private responseValidator;
|
|
34
|
-
private store;
|
|
35
|
-
private openai;
|
|
36
|
-
constructor(openaiApiKey: string, store: DocumentStore, embeddings: EmbeddingsProvider);
|
|
37
|
-
/**
|
|
38
|
-
* Generate alternative phrasings of the query to improve search recall
|
|
39
|
-
* @param query The original query
|
|
40
|
-
* @param componentNames Optional component names to include in variations
|
|
41
|
-
* @param propNames Optional prop names to include in variations
|
|
42
|
-
* @returns Array of query variations
|
|
43
|
-
*/
|
|
44
|
-
private expandQuery;
|
|
45
|
-
/**
|
|
46
|
-
* Search across multiple URLs and merge the results
|
|
47
|
-
* @param queryIntent The query intent
|
|
48
|
-
* @param urls Array of URLs to search
|
|
49
|
-
* @param options Retrieval options
|
|
50
|
-
* @returns Combined retrieval result
|
|
51
|
-
*/
|
|
52
|
-
private searchAcrossUrls;
|
|
53
|
-
search(query: string, options: DocsSearchOptions): Promise<DocsSearchResult>;
|
|
54
|
-
private identifyLimitations;
|
|
55
|
-
}
|
package/build/rag/docs-search.js
DELETED
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
import { QueryProcessor } from "./query-processor.js";
|
|
2
|
-
import { ContextRetriever } from "./retriever.js";
|
|
3
|
-
import { ContextAssembler } from "./context-assembler.js";
|
|
4
|
-
import { ResponseGenerator } from "./response-generator.js";
|
|
5
|
-
import { ResponseValidator } from "./validator.js";
|
|
6
|
-
import OpenAI from "openai";
|
|
7
|
-
export class DocsSearch {
|
|
8
|
-
queryProcessor;
|
|
9
|
-
contextRetriever;
|
|
10
|
-
contextAssembler;
|
|
11
|
-
responseGenerator;
|
|
12
|
-
responseValidator;
|
|
13
|
-
store;
|
|
14
|
-
openai; // OpenAI client
|
|
15
|
-
constructor(openaiApiKey, store, embeddings) {
|
|
16
|
-
this.store = store;
|
|
17
|
-
this.queryProcessor = new QueryProcessor(openaiApiKey, embeddings);
|
|
18
|
-
this.contextRetriever = new ContextRetriever(store, embeddings, openaiApiKey);
|
|
19
|
-
this.contextAssembler = new ContextAssembler();
|
|
20
|
-
this.responseGenerator = new ResponseGenerator(openaiApiKey);
|
|
21
|
-
this.responseValidator = new ResponseValidator(openaiApiKey);
|
|
22
|
-
// Initialize OpenAI client for query expansion
|
|
23
|
-
this.openai = new OpenAI({ apiKey: openaiApiKey });
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Generate alternative phrasings of the query to improve search recall
|
|
27
|
-
* @param query The original query
|
|
28
|
-
* @param componentNames Optional component names to include in variations
|
|
29
|
-
* @param propNames Optional prop names to include in variations
|
|
30
|
-
* @returns Array of query variations
|
|
31
|
-
*/
|
|
32
|
-
async expandQuery(query, componentNames, propNames) {
|
|
33
|
-
try {
|
|
34
|
-
console.debug(`[DocsSearch] Expanding query: "${query}"`);
|
|
35
|
-
// Create a prompt that instructs the model to generate alternative phrasings
|
|
36
|
-
const prompt = `Generate 3-5 alternative phrasings of the following query to improve search recall.
|
|
37
|
-
Each phrasing should capture the same intent but use different wording, terminology, or structure.
|
|
38
|
-
|
|
39
|
-
Original query: "${query}"
|
|
40
|
-
|
|
41
|
-
${componentNames && componentNames.length > 0
|
|
42
|
-
? `Important component names to include: ${componentNames.join(', ')}`
|
|
43
|
-
: ''}
|
|
44
|
-
${propNames && propNames.length > 0
|
|
45
|
-
? `Important prop names to include: ${propNames.join(', ')}`
|
|
46
|
-
: ''}
|
|
47
|
-
|
|
48
|
-
Return only the alternative phrasings, one per line, without numbering or additional text.`;
|
|
49
|
-
// Call the OpenAI API to generate variations
|
|
50
|
-
const response = await this.openai.chat.completions.create({
|
|
51
|
-
model: "gpt-3.5-turbo",
|
|
52
|
-
messages: [{ role: "user", content: prompt }],
|
|
53
|
-
temperature: 0.7,
|
|
54
|
-
max_tokens: 300
|
|
55
|
-
});
|
|
56
|
-
// Extract the variations from the response
|
|
57
|
-
const content = response.choices[0].message.content;
|
|
58
|
-
if (!content) {
|
|
59
|
-
return [query]; // Return original query if no content
|
|
60
|
-
}
|
|
61
|
-
// Split the content by newlines and filter out empty lines
|
|
62
|
-
const variations = content
|
|
63
|
-
.split('\n')
|
|
64
|
-
.map((line) => line.trim())
|
|
65
|
-
.filter((line) => line.length > 0);
|
|
66
|
-
// Add the original query to the variations
|
|
67
|
-
const allVariations = [query, ...variations];
|
|
68
|
-
console.debug(`[DocsSearch] Generated ${variations.length} query variations`);
|
|
69
|
-
return allVariations;
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
console.error('[DocsSearch] Error expanding query:', error);
|
|
73
|
-
return [query]; // Return original query on error
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Search across multiple URLs and merge the results
|
|
78
|
-
* @param queryIntent The query intent
|
|
79
|
-
* @param urls Array of URLs to search
|
|
80
|
-
* @param options Retrieval options
|
|
81
|
-
* @returns Combined retrieval result
|
|
82
|
-
*/
|
|
83
|
-
async searchAcrossUrls(queryIntent, urls, options) {
|
|
84
|
-
console.debug(`[DocsSearch] Searching across ${urls.length} URLs`);
|
|
85
|
-
// Initialize combined results
|
|
86
|
-
const allChunks = [];
|
|
87
|
-
const allScores = [];
|
|
88
|
-
const seenIds = new Set();
|
|
89
|
-
// Search each URL
|
|
90
|
-
for (const url of urls) {
|
|
91
|
-
try {
|
|
92
|
-
// Clone options and set URL filter
|
|
93
|
-
const urlOptions = {
|
|
94
|
-
...options,
|
|
95
|
-
filterByUrl: url
|
|
96
|
-
};
|
|
97
|
-
// Retrieve context for this URL
|
|
98
|
-
const urlRetrieval = await this.contextRetriever.retrieveContext(queryIntent, urlOptions);
|
|
99
|
-
// Add unique chunks to combined results
|
|
100
|
-
for (let i = 0; i < urlRetrieval.chunks.length; i++) {
|
|
101
|
-
const chunk = urlRetrieval.chunks[i];
|
|
102
|
-
if (!seenIds.has(chunk.id)) {
|
|
103
|
-
allChunks.push(chunk);
|
|
104
|
-
allScores.push(urlRetrieval.relevanceScores[i]);
|
|
105
|
-
seenIds.add(chunk.id);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
console.debug(`[DocsSearch] Found ${urlRetrieval.chunks.length} chunks for URL: ${url}`);
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
console.error(`[DocsSearch] Error searching URL ${url}:`, error);
|
|
112
|
-
// Continue with other URLs
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Sort combined results by score
|
|
116
|
-
const combinedResults = allChunks.map((chunk, index) => ({
|
|
117
|
-
chunk,
|
|
118
|
-
score: allScores[index]
|
|
119
|
-
}));
|
|
120
|
-
combinedResults.sort((a, b) => b.score - a.score);
|
|
121
|
-
// Take top results
|
|
122
|
-
const limit = options.nFinal || 30;
|
|
123
|
-
const topResults = combinedResults.slice(0, limit);
|
|
124
|
-
console.debug(`[DocsSearch] Combined results: ${allChunks.length}, top results: ${topResults.length}`);
|
|
125
|
-
return {
|
|
126
|
-
chunks: topResults.map(r => r.chunk),
|
|
127
|
-
relevanceScores: topResults.map(r => r.score)
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
async search(query, options) {
|
|
131
|
-
console.debug(`[DocsSearch] Starting search for query: "${query}"`, {
|
|
132
|
-
urls: options.urls,
|
|
133
|
-
componentNames: options.componentNames,
|
|
134
|
-
propNames: options.propNames,
|
|
135
|
-
strictMode: options.strictMode,
|
|
136
|
-
advanced: options.advanced
|
|
137
|
-
});
|
|
138
|
-
try {
|
|
139
|
-
// Set up advanced options with defaults
|
|
140
|
-
const advanced = options.advanced || {};
|
|
141
|
-
const useQueryExpansion = advanced.useQueryExpansion ?? true;
|
|
142
|
-
const useMultiQuery = advanced.useMultiQuery ?? true;
|
|
143
|
-
const maxQueryVariations = advanced.maxQueryVariations ?? 3;
|
|
144
|
-
const mergeUrlResults = advanced.mergeUrlResults ?? (options.urls.length > 1);
|
|
145
|
-
// Process query and determine intent
|
|
146
|
-
const queryIntent = await this.queryProcessor.processQuery(query);
|
|
147
|
-
console.debug('[DocsSearch] Query intent classified:', queryIntent);
|
|
148
|
-
// Add component names and prop names from options
|
|
149
|
-
if (options.componentNames) {
|
|
150
|
-
queryIntent.componentNames = options.componentNames;
|
|
151
|
-
}
|
|
152
|
-
if (options.propNames) {
|
|
153
|
-
queryIntent.propNames = options.propNames;
|
|
154
|
-
}
|
|
155
|
-
// Set up retrieval options
|
|
156
|
-
const retrievalOptions = {
|
|
157
|
-
limit: 40, // Doubled for more comprehensive results
|
|
158
|
-
minScore: 0.6, // Further lowered threshold for better recall
|
|
159
|
-
filterByIntent: false, // Disable intent filtering for diverse results
|
|
160
|
-
nRetrieve: 100, // Significantly increased for better coverage
|
|
161
|
-
nFinal: 50, // Increased final results count
|
|
162
|
-
useReranking: true,
|
|
163
|
-
rerankerModel: 'openai',
|
|
164
|
-
// Enable advanced retrieval features
|
|
165
|
-
useMultiStageRetrieval: true, // Use multi-stage retrieval for comprehensive results
|
|
166
|
-
expandRelatedComponents: true // Discover and include related components
|
|
167
|
-
};
|
|
168
|
-
let retrieval;
|
|
169
|
-
// Determine search strategy based on options
|
|
170
|
-
if (useQueryExpansion && useMultiQuery) {
|
|
171
|
-
// Multi-query approach with query expansion
|
|
172
|
-
console.debug('[DocsSearch] Using multi-query approach with query expansion');
|
|
173
|
-
// Generate query variations
|
|
174
|
-
const queryVariations = await this.expandQuery(query, options.componentNames, options.propNames);
|
|
175
|
-
// Limit the number of variations to use
|
|
176
|
-
const limitedVariations = queryVariations.slice(0, maxQueryVariations);
|
|
177
|
-
console.debug(`[DocsSearch] Using ${limitedVariations.length} query variations`);
|
|
178
|
-
// Process each variation to get intents
|
|
179
|
-
const intents = [];
|
|
180
|
-
for (const variation of limitedVariations) {
|
|
181
|
-
const intent = await this.queryProcessor.processQuery(variation);
|
|
182
|
-
// Add component and prop names
|
|
183
|
-
if (options.componentNames) {
|
|
184
|
-
intent.componentNames = options.componentNames;
|
|
185
|
-
}
|
|
186
|
-
if (options.propNames) {
|
|
187
|
-
intent.propNames = options.propNames;
|
|
188
|
-
}
|
|
189
|
-
intents.push(intent);
|
|
190
|
-
}
|
|
191
|
-
// Combine results from all variations
|
|
192
|
-
const allChunks = [];
|
|
193
|
-
const allScores = [];
|
|
194
|
-
const seenIds = new Set();
|
|
195
|
-
// Process each intent
|
|
196
|
-
for (const intent of intents) {
|
|
197
|
-
let intentResults;
|
|
198
|
-
if (mergeUrlResults && options.urls.length > 1) {
|
|
199
|
-
// Search across all URLs and merge results
|
|
200
|
-
intentResults = await this.searchAcrossUrls(intent, options.urls, retrievalOptions);
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
// Use single URL filter if only one URL
|
|
204
|
-
const urlOptions = {
|
|
205
|
-
...retrievalOptions,
|
|
206
|
-
filterByUrl: options.urls.length === 1 ? options.urls[0] : undefined
|
|
207
|
-
};
|
|
208
|
-
intentResults = await this.contextRetriever.retrieveContext(intent, urlOptions);
|
|
209
|
-
}
|
|
210
|
-
// Add unique chunks to combined results
|
|
211
|
-
for (let i = 0; i < intentResults.chunks.length; i++) {
|
|
212
|
-
const chunk = intentResults.chunks[i];
|
|
213
|
-
if (!seenIds.has(chunk.id)) {
|
|
214
|
-
allChunks.push(chunk);
|
|
215
|
-
allScores.push(intentResults.relevanceScores[i]);
|
|
216
|
-
seenIds.add(chunk.id);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
// Sort combined results by score
|
|
221
|
-
const combinedResults = allChunks.map((chunk, index) => ({
|
|
222
|
-
chunk,
|
|
223
|
-
score: allScores[index]
|
|
224
|
-
}));
|
|
225
|
-
combinedResults.sort((a, b) => b.score - a.score);
|
|
226
|
-
// Take top results
|
|
227
|
-
const limit = retrievalOptions.nFinal || 50;
|
|
228
|
-
const topResults = combinedResults.slice(0, limit);
|
|
229
|
-
retrieval = {
|
|
230
|
-
chunks: topResults.map(r => r.chunk),
|
|
231
|
-
relevanceScores: topResults.map(r => r.score)
|
|
232
|
-
};
|
|
233
|
-
console.debug(`[DocsSearch] Multi-query approach found ${retrieval.chunks.length} unique chunks`);
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
// Standard single-query approach
|
|
237
|
-
if (mergeUrlResults && options.urls.length > 1) {
|
|
238
|
-
// Search across all URLs and merge results
|
|
239
|
-
retrieval = await this.searchAcrossUrls(queryIntent, options.urls, retrievalOptions);
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
// Use single URL filter if only one URL
|
|
243
|
-
retrievalOptions.filterByUrl = options.urls.length === 1 ? options.urls[0] : undefined;
|
|
244
|
-
retrieval = await this.contextRetriever.retrieveContext(queryIntent, retrievalOptions);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
console.debug('[DocsSearch] Retrieved context chunks:', retrieval.chunks.length);
|
|
248
|
-
// Get raw search results for source attribution (using original query for consistency)
|
|
249
|
-
const rawResults = [];
|
|
250
|
-
for (const url of options.urls) {
|
|
251
|
-
try {
|
|
252
|
-
const results = await this.store.searchByText(query, {
|
|
253
|
-
limit: options.maxSourceChunks || 15,
|
|
254
|
-
filterByUrl: url
|
|
255
|
-
});
|
|
256
|
-
rawResults.push(...results);
|
|
257
|
-
}
|
|
258
|
-
catch (error) {
|
|
259
|
-
console.error(`[DocsSearch] Error searching text for URL ${url}:`, error);
|
|
260
|
-
// Continue with other URLs
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
console.debug('[DocsSearch] Retrieved raw search results:', rawResults.length);
|
|
264
|
-
// Assemble context with enhanced chunks from our improved retrieval
|
|
265
|
-
const assembled = await this.contextAssembler.assembleContext(retrieval.chunks);
|
|
266
|
-
console.debug('[DocsSearch] Assembled context with relationships from enhanced retrieval');
|
|
267
|
-
// Generate response
|
|
268
|
-
const generatedResponse = await this.responseGenerator.generateResponse(assembled, queryIntent);
|
|
269
|
-
console.debug('[DocsSearch] Generated response');
|
|
270
|
-
// Validate response
|
|
271
|
-
const validation = await this.responseValidator.validateResponse(generatedResponse, assembled);
|
|
272
|
-
console.debug('[DocsSearch] Validated response:', validation);
|
|
273
|
-
// Skip source attributions since they're not included in the response anymore
|
|
274
|
-
console.debug('[DocsSearch] Skipping source attributions since they\'re not included in the response');
|
|
275
|
-
// Identify limitations with advanced search information
|
|
276
|
-
const limitations = this.identifyLimitations(generatedResponse, validation, assembled, options.strictMode || false, options.advanced);
|
|
277
|
-
// If strict mode is enabled and validation failed, reject the response
|
|
278
|
-
if (options.strictMode &&
|
|
279
|
-
(!validation.factCheck || !validation.consistencyCheck || !validation.codeCheck)) {
|
|
280
|
-
console.debug('[DocsSearch] Strict mode enabled and validation failed, rejecting response');
|
|
281
|
-
// Collect all validation issues to explain why the response was rejected
|
|
282
|
-
const validationIssues = [
|
|
283
|
-
...(validation.details.factCheckDetails || []),
|
|
284
|
-
...(validation.details.consistencyCheckDetails || []),
|
|
285
|
-
...(validation.details.codeCheckDetails || [])
|
|
286
|
-
];
|
|
287
|
-
// Create a more informative rejection message that includes the specific issues
|
|
288
|
-
let rejectionMessage = "I cannot provide a reliable answer based on the documentation. The generated response contains information that is not directly supported by the documentation sources.";
|
|
289
|
-
if (validationIssues.length > 0) {
|
|
290
|
-
rejectionMessage += "\n\nSpecific issues identified:\n";
|
|
291
|
-
validationIssues.slice(0, 3).forEach(issue => {
|
|
292
|
-
rejectionMessage += `- ${issue}\n`;
|
|
293
|
-
});
|
|
294
|
-
if (validationIssues.length > 3) {
|
|
295
|
-
rejectionMessage += `- Plus ${validationIssues.length - 3} more issues\n`;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
return {
|
|
299
|
-
answer: rejectionMessage,
|
|
300
|
-
codeExamples: [],
|
|
301
|
-
componentDetails: [],
|
|
302
|
-
validation: {
|
|
303
|
-
factCheck: validation.factCheck,
|
|
304
|
-
codeCheck: validation.codeCheck,
|
|
305
|
-
consistencyCheck: validation.consistencyCheck,
|
|
306
|
-
details: validationIssues
|
|
307
|
-
},
|
|
308
|
-
limitations: [
|
|
309
|
-
"The documentation does not contain sufficient information to answer this query accurately.",
|
|
310
|
-
"Consider rephrasing your query to focus on information that is explicitly documented."
|
|
311
|
-
]
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
// Return the combined result without source chunks to reduce noise
|
|
315
|
-
return {
|
|
316
|
-
answer: generatedResponse.text,
|
|
317
|
-
codeExamples: generatedResponse.codeExamples || [],
|
|
318
|
-
componentDetails: Object.entries(generatedResponse.componentDetails || {}).map(([name, details]) => ({
|
|
319
|
-
name,
|
|
320
|
-
...details
|
|
321
|
-
})),
|
|
322
|
-
validation: {
|
|
323
|
-
factCheck: validation.factCheck,
|
|
324
|
-
codeCheck: validation.codeCheck,
|
|
325
|
-
consistencyCheck: validation.consistencyCheck,
|
|
326
|
-
details: [
|
|
327
|
-
...(validation.details.factCheckDetails || []),
|
|
328
|
-
...(validation.details.codeCheckDetails || []),
|
|
329
|
-
...(validation.details.consistencyCheckDetails || [])
|
|
330
|
-
]
|
|
331
|
-
},
|
|
332
|
-
limitations
|
|
333
|
-
};
|
|
334
|
-
}
|
|
335
|
-
catch (error) {
|
|
336
|
-
console.error('[DocsSearch] Error during search:', error);
|
|
337
|
-
throw error;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
// Source attribution methods have been removed since they're not needed anymore
|
|
341
|
-
identifyLimitations(response, validation, context, strictMode, advanced) {
|
|
342
|
-
const limitations = [];
|
|
343
|
-
// Check if validation failed
|
|
344
|
-
if (!validation.factCheck) {
|
|
345
|
-
limitations.push("Some information may not be directly supported by the documentation.");
|
|
346
|
-
}
|
|
347
|
-
if (!validation.consistencyCheck) {
|
|
348
|
-
limitations.push("There may be inconsistencies between the response and the documentation.");
|
|
349
|
-
}
|
|
350
|
-
if (!validation.codeCheck) {
|
|
351
|
-
limitations.push("The code examples may contain syntax errors or inconsistencies.");
|
|
352
|
-
}
|
|
353
|
-
// Check if context is limited
|
|
354
|
-
if (context.hierarchicalContext.length < 5) {
|
|
355
|
-
limitations.push("Limited documentation context was available for this query.");
|
|
356
|
-
}
|
|
357
|
-
// Check if code examples are missing
|
|
358
|
-
if (response.codeExamples?.length === 0) {
|
|
359
|
-
limitations.push("No code examples were found in the documentation for this query.");
|
|
360
|
-
}
|
|
361
|
-
// Add a note about strict mode
|
|
362
|
-
if (strictMode) {
|
|
363
|
-
limitations.push("Strict mode is enabled: only information directly supported by the documentation is included.");
|
|
364
|
-
}
|
|
365
|
-
// Add information about advanced search features
|
|
366
|
-
if (advanced) {
|
|
367
|
-
if (advanced.useQueryExpansion && advanced.useMultiQuery) {
|
|
368
|
-
limitations.push("Enhanced search with query expansion and multi-query approach was used to improve results.");
|
|
369
|
-
}
|
|
370
|
-
else if (advanced.useQueryExpansion) {
|
|
371
|
-
limitations.push("Query expansion was used to improve search results.");
|
|
372
|
-
}
|
|
373
|
-
if (advanced.mergeUrlResults && context.hierarchicalContext.length > 10) {
|
|
374
|
-
limitations.push("Results from multiple documentation sources were combined to provide a more comprehensive answer.");
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
return limitations;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
//# sourceMappingURL=docs-search.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docs-search.js","sourceRoot":"","sources":["../../src/rag/docs-search.ts"],"names":[],"mappings":"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"}
|
package/build/rag/pipeline.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { GeneratedResponse } from "./response-generator.js";
|
|
2
|
-
import { ValidationResult } from "./validator.js";
|
|
3
|
-
export interface RAGResponse {
|
|
4
|
-
response: GeneratedResponse;
|
|
5
|
-
validation: ValidationResult;
|
|
6
|
-
}
|
|
7
|
-
export interface RAGConfig {
|
|
8
|
-
openaiApiKey: string;
|
|
9
|
-
dbPath: string;
|
|
10
|
-
vectorDbPath: string;
|
|
11
|
-
maxCacheSize?: number;
|
|
12
|
-
}
|
|
13
|
-
export declare class RAGPipeline {
|
|
14
|
-
private queryProcessor;
|
|
15
|
-
private contextRetriever;
|
|
16
|
-
private contextAssembler;
|
|
17
|
-
private responseGenerator;
|
|
18
|
-
private responseValidator;
|
|
19
|
-
private versionManager;
|
|
20
|
-
private cache;
|
|
21
|
-
private store;
|
|
22
|
-
private embeddings;
|
|
23
|
-
constructor(config: RAGConfig);
|
|
24
|
-
initialize(): Promise<void>;
|
|
25
|
-
process(query: string): Promise<RAGResponse>;
|
|
26
|
-
}
|