obedding 1.0.0 → 1.0.2
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 +92 -163
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +78 -23
- package/dist/index.js.map +1 -1
- package/dist/lmstudio.d.ts +57 -0
- package/dist/lmstudio.d.ts.map +1 -0
- package/dist/lmstudio.js +109 -0
- package/dist/lmstudio.js.map +1 -0
- package/dist/preprocessor.d.ts +34 -0
- package/dist/preprocessor.d.ts.map +1 -0
- package/dist/preprocessor.js +146 -0
- package/dist/preprocessor.js.map +1 -0
- package/dist/search.d.ts +1 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +31 -7
- package/dist/search.js.map +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -1
- package/dist/storage.js.map +1 -1
- package/docs/API.md +290 -0
- package/docs/ARCHITECTURE.md +229 -0
- package/docs/BACKENDS.md +230 -0
- package/package.json +5 -2
package/dist/lmstudio.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LM Studio API client for generating embeddings using GGUF models
|
|
3
|
+
*
|
|
4
|
+
* LM Studio provides an OpenAI-compatible API for local models.
|
|
5
|
+
* Default port: 1234
|
|
6
|
+
* Default model: Qwen3-Embedding-0.6B-GGUF (from Hugging Face)
|
|
7
|
+
*/
|
|
8
|
+
const LMSTUDIO_BASE_URL = process.env.LMSTUDIO_BASE_URL || 'http://localhost:1234';
|
|
9
|
+
const DEFAULT_MODEL = 'text-embedding-qwen3-embedding-0.6b';
|
|
10
|
+
/**
|
|
11
|
+
* Check if LM Studio is running
|
|
12
|
+
*/
|
|
13
|
+
export async function checkLMStudioConnection() {
|
|
14
|
+
try {
|
|
15
|
+
const response = await fetch(`${LMSTUDIO_BASE_URL}/v1/models`, {
|
|
16
|
+
method: 'GET',
|
|
17
|
+
signal: AbortSignal.timeout(5000)
|
|
18
|
+
});
|
|
19
|
+
return response.ok;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generate embedding for text using LM Studio
|
|
27
|
+
*/
|
|
28
|
+
export async function generateEmbedding(text, model = DEFAULT_MODEL) {
|
|
29
|
+
const response = await fetch(`${LMSTUDIO_BASE_URL}/v1/embeddings`, {
|
|
30
|
+
method: 'POST',
|
|
31
|
+
headers: {
|
|
32
|
+
'Content-Type': 'application/json',
|
|
33
|
+
},
|
|
34
|
+
body: JSON.stringify({
|
|
35
|
+
model,
|
|
36
|
+
input: text,
|
|
37
|
+
encoding_format: 'float'
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
let errorMessage = response.statusText;
|
|
42
|
+
try {
|
|
43
|
+
const error = await response.json();
|
|
44
|
+
if (error.error?.message) {
|
|
45
|
+
errorMessage = error.error.message;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
try {
|
|
50
|
+
errorMessage = await response.text();
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Use status text
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
throw new Error(`LM Studio API error: ${errorMessage}`);
|
|
57
|
+
}
|
|
58
|
+
const data = await response.json();
|
|
59
|
+
if (!data.data || !Array.isArray(data.data) || data.data.length === 0) {
|
|
60
|
+
throw new Error('Invalid embedding response from LM Studio');
|
|
61
|
+
}
|
|
62
|
+
const embedding = data.data[0].embedding;
|
|
63
|
+
if (!embedding || !Array.isArray(embedding)) {
|
|
64
|
+
throw new Error('Invalid embedding format in LM Studio response');
|
|
65
|
+
}
|
|
66
|
+
return embedding;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Batch generate embeddings for multiple texts
|
|
70
|
+
*/
|
|
71
|
+
export async function generateEmbeddings(texts, model = DEFAULT_MODEL, onProgress) {
|
|
72
|
+
const embeddings = [];
|
|
73
|
+
for (let i = 0; i < texts.length; i++) {
|
|
74
|
+
const embedding = await generateEmbedding(texts[i], model);
|
|
75
|
+
embeddings.push(embedding);
|
|
76
|
+
if (onProgress) {
|
|
77
|
+
onProgress(i + 1, texts.length);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return embeddings;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get model information
|
|
84
|
+
*/
|
|
85
|
+
export async function getModelInfo(model = DEFAULT_MODEL) {
|
|
86
|
+
try {
|
|
87
|
+
const response = await fetch(`${LMSTUDIO_BASE_URL}/v1/models`);
|
|
88
|
+
if (!response.ok) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
const data = await response.json();
|
|
92
|
+
const models = data.data || [];
|
|
93
|
+
// Try to find exact or partial match
|
|
94
|
+
const modelInfo = models.find((m) => m.id === model || m.id.includes(model) || model.includes(m.id));
|
|
95
|
+
if (modelInfo) {
|
|
96
|
+
// Note: LM Studio doesn't provide dimensions in the models list
|
|
97
|
+
// We'd need to generate an embedding to determine dimensions
|
|
98
|
+
return {
|
|
99
|
+
name: modelInfo.id,
|
|
100
|
+
dimensions: undefined
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=lmstudio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lmstudio.js","sourceRoot":"","sources":["../src/lmstudio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content preprocessing for embedding generation
|
|
3
|
+
*
|
|
4
|
+
* The Qwen3-Embedding-0.6B-4bit-DWQ model is overly sensitive to text STRUCTURE patterns.
|
|
5
|
+
* Obsidian notes with similar markdown structure get identical embeddings.
|
|
6
|
+
*
|
|
7
|
+
* This module preprocesses note content to:
|
|
8
|
+
* 1. Extract semantic metadata (title, tags, repo, context)
|
|
9
|
+
* 2. Remove markdown structural elements
|
|
10
|
+
* 3. Normalize text for consistent embedding
|
|
11
|
+
*/
|
|
12
|
+
import { NoteFile } from './scanner.js';
|
|
13
|
+
export interface PreprocessedContent {
|
|
14
|
+
/** Original content without frontmatter */
|
|
15
|
+
text: string;
|
|
16
|
+
/** Metadata as keyword string */
|
|
17
|
+
metadata: string;
|
|
18
|
+
/** Combined metadata + cleaned text for embedding */
|
|
19
|
+
combined: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Preprocess note content for embedding generation
|
|
23
|
+
*/
|
|
24
|
+
export declare function preprocessNote(note: NoteFile): PreprocessedContent;
|
|
25
|
+
/**
|
|
26
|
+
* Check if embeddings have sufficient variance
|
|
27
|
+
* Returns true if embeddings are too similar (potential problem)
|
|
28
|
+
*/
|
|
29
|
+
export declare function checkEmbeddingVariance(embeddings: number[][], threshold?: number): {
|
|
30
|
+
variance: number;
|
|
31
|
+
isTooLow: boolean;
|
|
32
|
+
avgSimilarity: number;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=preprocessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,mBAAmB,CAwClE;AA4ED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAE,MAAa,GAAG;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,CA4BA"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content preprocessing for embedding generation
|
|
3
|
+
*
|
|
4
|
+
* The Qwen3-Embedding-0.6B-4bit-DWQ model is overly sensitive to text STRUCTURE patterns.
|
|
5
|
+
* Obsidian notes with similar markdown structure get identical embeddings.
|
|
6
|
+
*
|
|
7
|
+
* This module preprocesses note content to:
|
|
8
|
+
* 1. Extract semantic metadata (title, tags, repo, context)
|
|
9
|
+
* 2. Remove markdown structural elements
|
|
10
|
+
* 3. Normalize text for consistent embedding
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Preprocess note content for embedding generation
|
|
14
|
+
*/
|
|
15
|
+
export function preprocessNote(note) {
|
|
16
|
+
const { data, content } = note.frontmatter;
|
|
17
|
+
// Extract metadata as keywords for semantic context
|
|
18
|
+
const metadataParts = [];
|
|
19
|
+
if (data.title) {
|
|
20
|
+
metadataParts.push(`title:${data.title}`);
|
|
21
|
+
}
|
|
22
|
+
if (data.tags) {
|
|
23
|
+
const tags = Array.isArray(data.tags) ? data.tags.join(',') : data.tags;
|
|
24
|
+
metadataParts.push(`tags:${tags}`);
|
|
25
|
+
}
|
|
26
|
+
if (data.repo) {
|
|
27
|
+
metadataParts.push(`repo:${data.repo}`);
|
|
28
|
+
}
|
|
29
|
+
if (data.context) {
|
|
30
|
+
metadataParts.push(`context:${data.context}`);
|
|
31
|
+
}
|
|
32
|
+
if (data.type) {
|
|
33
|
+
metadataParts.push(`type:${data.type}`);
|
|
34
|
+
}
|
|
35
|
+
// Clean markdown structure while preserving semantic content
|
|
36
|
+
const cleaned = cleanMarkdownStructure(content);
|
|
37
|
+
// Combine metadata and cleaned content
|
|
38
|
+
// Metadata comes first to provide context for the embedding model
|
|
39
|
+
const metadataStr = metadataParts.join(' ');
|
|
40
|
+
const combined = metadataStr ? `${metadataStr} ${cleaned}` : cleaned;
|
|
41
|
+
return {
|
|
42
|
+
text: cleaned,
|
|
43
|
+
metadata: metadataStr,
|
|
44
|
+
combined
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Remove markdown structural elements while preserving content
|
|
49
|
+
*/
|
|
50
|
+
function cleanMarkdownStructure(content) {
|
|
51
|
+
return content
|
|
52
|
+
// Remove YAML frontmatter (already removed by gray-matter, but safety check)
|
|
53
|
+
.replace(/^---\n.*?\n---\n/gs, '')
|
|
54
|
+
// Remove ATX-style headings (# ## ###) but keep the heading text
|
|
55
|
+
.replace(/^#{1,6}\s+/gm, '')
|
|
56
|
+
// Remove Setext-style underlines for headings
|
|
57
|
+
.replace(/^[-=]{3,}\s*$/gm, '')
|
|
58
|
+
// Remove unordered list markers (-, *, +)
|
|
59
|
+
.replace(/^[\s]*[-*+]\s+/gm, '')
|
|
60
|
+
// Remove ordered list markers (1., 2., etc.)
|
|
61
|
+
.replace(/^[\s]*\d+\.\s+/gm, '')
|
|
62
|
+
// Remove checkbox markers [ ] and [x]
|
|
63
|
+
.replace(/\[[ xX]\]\s*/g, '')
|
|
64
|
+
// Remove horizontal rules (---, ***, ___)
|
|
65
|
+
.replace(/^[\s]*[-_*]{3,}\s*$/gm, '')
|
|
66
|
+
// Remove blockquote markers (>)
|
|
67
|
+
.replace(/^>\s*/gm, '')
|
|
68
|
+
// Remove code block markers (``` and ~~~) but keep code content
|
|
69
|
+
.replace(/^```[\w]*\n?/gm, '')
|
|
70
|
+
.replace(/^~~~[\w]*\n?/gm, '')
|
|
71
|
+
// Remove inline code backticks but keep content
|
|
72
|
+
.replace(/`([^`]+)`/g, '$1')
|
|
73
|
+
// Remove bold/italic markers
|
|
74
|
+
.replace(/\*\*\*([^*]+)\*\*\*/g, '$1')
|
|
75
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1')
|
|
76
|
+
.replace(/\*([^*]+)\*/g, '$1')
|
|
77
|
+
.replace(/___([^_]+)___/g, '$1')
|
|
78
|
+
.replace(/__([^_]+)__/g, '$1')
|
|
79
|
+
.replace(/_([^_]+)_/g, '$1')
|
|
80
|
+
// Remove strikethrough
|
|
81
|
+
.replace(/~~([^~]+)~~/g, '$1')
|
|
82
|
+
// Remove links but keep link text
|
|
83
|
+
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
|
|
84
|
+
.replace(/\[([^\]]+)\]\[[^\]]+\]/g, '$1')
|
|
85
|
+
// Remove image links
|
|
86
|
+
.replace(/!\[([^\]]*)\]\([^)]+\)/g, '$1')
|
|
87
|
+
// Remove table formatting but keep content
|
|
88
|
+
.replace(/^\|[-:\s|]+\|\s*$/gm, '')
|
|
89
|
+
.replace(/\|/g, ' ')
|
|
90
|
+
// Remove footnote references
|
|
91
|
+
.replace(/\[\^([^\]]+)\]/g, '')
|
|
92
|
+
// Remove HTML tags
|
|
93
|
+
.replace(/<[^>]+>/g, '')
|
|
94
|
+
// Normalize excessive whitespace (3+ newlines to 2)
|
|
95
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
96
|
+
// Normalize multiple spaces to single space
|
|
97
|
+
.replace(/[ \t]+/g, ' ')
|
|
98
|
+
// Trim leading/trailing whitespace
|
|
99
|
+
.trim();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if embeddings have sufficient variance
|
|
103
|
+
* Returns true if embeddings are too similar (potential problem)
|
|
104
|
+
*/
|
|
105
|
+
export function checkEmbeddingVariance(embeddings, threshold = 0.95) {
|
|
106
|
+
if (embeddings.length < 2) {
|
|
107
|
+
return { variance: 1, isTooLow: false, avgSimilarity: 0 };
|
|
108
|
+
}
|
|
109
|
+
// Calculate pairwise cosine similarities
|
|
110
|
+
let totalSimilarity = 0;
|
|
111
|
+
let comparisons = 0;
|
|
112
|
+
for (let i = 0; i < Math.min(embeddings.length, 10); i++) {
|
|
113
|
+
for (let j = i + 1; j < Math.min(embeddings.length, 10); j++) {
|
|
114
|
+
const similarity = cosineSimilarity(embeddings[i].slice(0, 100), // Only check first 100 dims for speed
|
|
115
|
+
embeddings[j].slice(0, 100));
|
|
116
|
+
totalSimilarity += similarity;
|
|
117
|
+
comparisons++;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const avgSimilarity = comparisons > 0 ? totalSimilarity / comparisons : 0;
|
|
121
|
+
const variance = 1 - avgSimilarity;
|
|
122
|
+
return {
|
|
123
|
+
variance,
|
|
124
|
+
isTooLow: avgSimilarity > threshold,
|
|
125
|
+
avgSimilarity
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Calculate cosine similarity between two vectors
|
|
130
|
+
*/
|
|
131
|
+
function cosineSimilarity(a, b) {
|
|
132
|
+
if (a.length !== b.length) {
|
|
133
|
+
// Truncate to shorter length
|
|
134
|
+
const minLen = Math.min(a.length, b.length);
|
|
135
|
+
a = a.slice(0, minLen);
|
|
136
|
+
b = b.slice(0, minLen);
|
|
137
|
+
}
|
|
138
|
+
const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);
|
|
139
|
+
const magnitudeA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));
|
|
140
|
+
const magnitudeB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));
|
|
141
|
+
if (magnitudeA === 0 || magnitudeB === 0) {
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
return dotProduct / (magnitudeA * magnitudeB);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=preprocessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"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"}
|
package/dist/search.d.ts
CHANGED
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAiGjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAoCpE"}
|
package/dist/search.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { generateEmbedding,
|
|
1
|
+
import { generateEmbedding as generateOllamaEmbedding, checkOllamaConnection } from './ollama.js';
|
|
2
|
+
import { generateEmbedding as generateMLXEmbedding, checkMLXConnection } from './mlx.js';
|
|
3
|
+
import { generateEmbedding as generateLMStudioEmbedding, checkLMStudioConnection } from './lmstudio.js';
|
|
2
4
|
import { StorageManager } from './storage.js';
|
|
3
5
|
import { cosineSimilarity, truncateToTokens } from './utils.js';
|
|
4
6
|
/**
|
|
@@ -6,11 +8,29 @@ import { cosineSimilarity, truncateToTokens } from './utils.js';
|
|
|
6
8
|
*/
|
|
7
9
|
export async function searchNotes(options) {
|
|
8
10
|
const startTime = Date.now();
|
|
9
|
-
const { query, storagePath, topK = 10,
|
|
10
|
-
//
|
|
11
|
-
|
|
11
|
+
const { query, storagePath, topK = 10, backend = 'lmstudio', model, minScore = 0.0 } = options;
|
|
12
|
+
// Determine model and connection check based on backend
|
|
13
|
+
let effectiveModel = model;
|
|
14
|
+
let isConnected = false;
|
|
15
|
+
if (backend === 'ollama') {
|
|
16
|
+
isConnected = await checkOllamaConnection();
|
|
17
|
+
effectiveModel = effectiveModel || 'qwen3-embedding:0.6b';
|
|
18
|
+
}
|
|
19
|
+
else if (backend === 'lmstudio') {
|
|
20
|
+
isConnected = await checkLMStudioConnection();
|
|
21
|
+
effectiveModel = effectiveModel || 'text-embedding-qwen3-embedding-0.6b';
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
isConnected = await checkMLXConnection();
|
|
25
|
+
effectiveModel = effectiveModel || 'mlx-community/Qwen3-Embedding-0.6B-4bit-DWQ';
|
|
26
|
+
}
|
|
27
|
+
const serverNames = {
|
|
28
|
+
ollama: 'Ollama',
|
|
29
|
+
lmstudio: 'LM Studio',
|
|
30
|
+
mlx: 'MLX'
|
|
31
|
+
};
|
|
12
32
|
if (!isConnected) {
|
|
13
|
-
throw new Error(
|
|
33
|
+
throw new Error(`Cannot connect to embedding server. Make sure ${serverNames[backend] || serverNames.ollama} is running.`);
|
|
14
34
|
}
|
|
15
35
|
// Load storage
|
|
16
36
|
const storage = new StorageManager(storagePath);
|
|
@@ -24,9 +44,13 @@ export async function searchNotes(options) {
|
|
|
24
44
|
duration: (Date.now() - startTime) / 1000
|
|
25
45
|
};
|
|
26
46
|
}
|
|
27
|
-
// Generate query embedding
|
|
47
|
+
// Generate query embedding using the selected backend
|
|
28
48
|
const truncatedQuery = truncateToTokens(query, 8000);
|
|
29
|
-
const queryEmbedding =
|
|
49
|
+
const queryEmbedding = backend === 'ollama'
|
|
50
|
+
? await generateOllamaEmbedding(truncatedQuery, effectiveModel)
|
|
51
|
+
: backend === 'lmstudio'
|
|
52
|
+
? await generateLMStudioEmbedding(truncatedQuery, effectiveModel)
|
|
53
|
+
: await generateMLXEmbedding(truncatedQuery, effectiveModel);
|
|
30
54
|
// Calculate similarities
|
|
31
55
|
const results = [];
|
|
32
56
|
for (const note of notes) {
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export declare class StorageManager {
|
|
|
47
47
|
/**
|
|
48
48
|
* Add or update a note embedding
|
|
49
49
|
*/
|
|
50
|
-
upsertNote(note: NoteEmbedding): Promise<void>;
|
|
50
|
+
upsertNote(note: NoteEmbedding, model?: string, dimensions?: number): Promise<void>;
|
|
51
51
|
/**
|
|
52
52
|
* Remove a note by path
|
|
53
53
|
*/
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAMD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAA+B;gBAE/B,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,QAAQ,IAAI,aAAa,EAAE;IAO3B;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAMD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAA+B;gBAE/B,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,QAAQ,IAAI,aAAa,EAAE;IAO3B;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BzF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBpD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAc3D;;OAEG;IACH,QAAQ,IAAI;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB;IAwBD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAoBjB"}
|
package/dist/storage.js
CHANGED
|
@@ -73,7 +73,7 @@ export class StorageManager {
|
|
|
73
73
|
/**
|
|
74
74
|
* Add or update a note embedding
|
|
75
75
|
*/
|
|
76
|
-
async upsertNote(note) {
|
|
76
|
+
async upsertNote(note, model, dimensions) {
|
|
77
77
|
if (!this.data) {
|
|
78
78
|
await this.initialize();
|
|
79
79
|
}
|
|
@@ -87,6 +87,13 @@ export class StorageManager {
|
|
|
87
87
|
this.data.notes.push(note);
|
|
88
88
|
}
|
|
89
89
|
this.data.indexed_at = new Date().toISOString();
|
|
90
|
+
// Update model metadata if provided
|
|
91
|
+
if (model !== undefined) {
|
|
92
|
+
this.data.model = model;
|
|
93
|
+
}
|
|
94
|
+
if (dimensions !== undefined) {
|
|
95
|
+
this.data.dimensions = dimensions;
|
|
96
|
+
}
|
|
90
97
|
}
|
|
91
98
|
/**
|
|
92
99
|
* Remove a note by path
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,IAAI,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AA4B7B,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,aAAa,GAAG,6CAA6C,CAAC;AACpE,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,WAAW,CAAS;IACpB,IAAI,GAA0B,IAAI,CAAC;IAE3C,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,uCAAwC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,uCAAuC;gBACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAmB;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|