@nahisaho/katashiro-rag 2.0.0
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/LICENSE +21 -0
- package/dist/RAGEngine.d.ts +58 -0
- package/dist/RAGEngine.d.ts.map +1 -0
- package/dist/RAGEngine.js +97 -0
- package/dist/RAGEngine.js.map +1 -0
- package/dist/RAGPipeline.d.ts +162 -0
- package/dist/RAGPipeline.d.ts.map +1 -0
- package/dist/RAGPipeline.js +222 -0
- package/dist/RAGPipeline.js.map +1 -0
- package/dist/Retriever.d.ts +49 -0
- package/dist/Retriever.d.ts.map +1 -0
- package/dist/Retriever.js +96 -0
- package/dist/Retriever.js.map +1 -0
- package/dist/chunking/DocumentChunker.d.ts +47 -0
- package/dist/chunking/DocumentChunker.d.ts.map +1 -0
- package/dist/chunking/DocumentChunker.js +171 -0
- package/dist/chunking/DocumentChunker.js.map +1 -0
- package/dist/chunking/index.d.ts +5 -0
- package/dist/chunking/index.d.ts.map +1 -0
- package/dist/chunking/index.js +5 -0
- package/dist/chunking/index.js.map +1 -0
- package/dist/embedding/AzureOpenAIEmbeddingProvider.d.ts +63 -0
- package/dist/embedding/AzureOpenAIEmbeddingProvider.d.ts.map +1 -0
- package/dist/embedding/AzureOpenAIEmbeddingProvider.js +133 -0
- package/dist/embedding/AzureOpenAIEmbeddingProvider.js.map +1 -0
- package/dist/embedding/BaseEmbeddingProvider.d.ts +43 -0
- package/dist/embedding/BaseEmbeddingProvider.d.ts.map +1 -0
- package/dist/embedding/BaseEmbeddingProvider.js +98 -0
- package/dist/embedding/BaseEmbeddingProvider.js.map +1 -0
- package/dist/embedding/EmbeddingFactory.d.ts +75 -0
- package/dist/embedding/EmbeddingFactory.d.ts.map +1 -0
- package/dist/embedding/EmbeddingFactory.js +153 -0
- package/dist/embedding/EmbeddingFactory.js.map +1 -0
- package/dist/embedding/EmbeddingManager.d.ts +41 -0
- package/dist/embedding/EmbeddingManager.d.ts.map +1 -0
- package/dist/embedding/EmbeddingManager.js +93 -0
- package/dist/embedding/EmbeddingManager.js.map +1 -0
- package/dist/embedding/MockEmbeddingProvider.d.ts +54 -0
- package/dist/embedding/MockEmbeddingProvider.d.ts.map +1 -0
- package/dist/embedding/MockEmbeddingProvider.js +91 -0
- package/dist/embedding/MockEmbeddingProvider.js.map +1 -0
- package/dist/embedding/OllamaEmbeddingProvider.d.ts +69 -0
- package/dist/embedding/OllamaEmbeddingProvider.d.ts.map +1 -0
- package/dist/embedding/OllamaEmbeddingProvider.js +136 -0
- package/dist/embedding/OllamaEmbeddingProvider.js.map +1 -0
- package/dist/embedding/OpenAIEmbeddingProvider.d.ts +83 -0
- package/dist/embedding/OpenAIEmbeddingProvider.d.ts.map +1 -0
- package/dist/embedding/OpenAIEmbeddingProvider.js +150 -0
- package/dist/embedding/OpenAIEmbeddingProvider.js.map +1 -0
- package/dist/embedding/index.d.ts +16 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +15 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/reranking/LLMReranker.d.ts +147 -0
- package/dist/reranking/LLMReranker.d.ts.map +1 -0
- package/dist/reranking/LLMReranker.js +262 -0
- package/dist/reranking/LLMReranker.js.map +1 -0
- package/dist/reranking/index.d.ts +7 -0
- package/dist/reranking/index.d.ts.map +1 -0
- package/dist/reranking/index.js +7 -0
- package/dist/reranking/index.js.map +1 -0
- package/dist/types.d.ts +144 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/vectordb/FileVectorStore.d.ts +93 -0
- package/dist/vectordb/FileVectorStore.d.ts.map +1 -0
- package/dist/vectordb/FileVectorStore.js +218 -0
- package/dist/vectordb/FileVectorStore.js.map +1 -0
- package/dist/vectordb/InMemoryVectorStore.d.ts +48 -0
- package/dist/vectordb/InMemoryVectorStore.d.ts.map +1 -0
- package/dist/vectordb/InMemoryVectorStore.js +86 -0
- package/dist/vectordb/InMemoryVectorStore.js.map +1 -0
- package/dist/vectordb/index.d.ts +8 -0
- package/dist/vectordb/index.d.ts.map +1 -0
- package/dist/vectordb/index.js +6 -0
- package/dist/vectordb/index.js.map +1 -0
- package/package.json +37 -0
- package/src/RAGEngine.ts +127 -0
- package/src/RAGPipeline.ts +357 -0
- package/src/Retriever.ts +121 -0
- package/src/chunking/DocumentChunker.ts +207 -0
- package/src/chunking/index.ts +5 -0
- package/src/embedding/AzureOpenAIEmbeddingProvider.ts +208 -0
- package/src/embedding/BaseEmbeddingProvider.ts +133 -0
- package/src/embedding/EmbeddingFactory.ts +225 -0
- package/src/embedding/EmbeddingManager.ts +110 -0
- package/src/embedding/MockEmbeddingProvider.ts +123 -0
- package/src/embedding/OllamaEmbeddingProvider.ts +197 -0
- package/src/embedding/OpenAIEmbeddingProvider.ts +226 -0
- package/src/embedding/index.ts +33 -0
- package/src/index.ts +55 -0
- package/src/reranking/LLMReranker.ts +401 -0
- package/src/reranking/index.ts +15 -0
- package/src/types.ts +157 -0
- package/src/vectordb/FileVectorStore.ts +289 -0
- package/src/vectordb/InMemoryVectorStore.ts +121 -0
- package/src/vectordb/index.ts +9 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ollama Embedding Provider
|
|
3
|
+
*
|
|
4
|
+
* Local embedding provider using Ollama
|
|
5
|
+
*
|
|
6
|
+
* @requirement REQ-RAG-001
|
|
7
|
+
* @design DES-KATASHIRO-003-RAG
|
|
8
|
+
*/
|
|
9
|
+
import { BaseEmbeddingProvider } from './BaseEmbeddingProvider.js';
|
|
10
|
+
import type { EmbeddingConfig } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Ollama設定
|
|
13
|
+
*/
|
|
14
|
+
export interface OllamaEmbeddingConfig extends EmbeddingConfig {
|
|
15
|
+
/** ベースURL(デフォルト: http://localhost:11434) */
|
|
16
|
+
baseUrl?: string;
|
|
17
|
+
/** モデル名(デフォルト: nomic-embed-text) */
|
|
18
|
+
model?: string;
|
|
19
|
+
/** Keep Alive(モデルをメモリに保持する時間) */
|
|
20
|
+
keepAlive?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Ollama Embeddingプロバイダー
|
|
24
|
+
*
|
|
25
|
+
* ローカルでOllamaを使用した埋め込み生成
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const provider = new OllamaEmbeddingProvider({
|
|
30
|
+
* baseUrl: 'http://192.168.224.1:11434',
|
|
31
|
+
* model: 'nomic-embed-text',
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* const embedding = await provider.embed('Hello, world!');
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare class OllamaEmbeddingProvider extends BaseEmbeddingProvider {
|
|
38
|
+
readonly name = "ollama";
|
|
39
|
+
private readonly baseUrl;
|
|
40
|
+
private readonly model;
|
|
41
|
+
private readonly keepAlive;
|
|
42
|
+
private _dimensions;
|
|
43
|
+
get dimensions(): number;
|
|
44
|
+
constructor(config?: OllamaEmbeddingConfig);
|
|
45
|
+
/**
|
|
46
|
+
* モデルごとのデフォルト次元数
|
|
47
|
+
*/
|
|
48
|
+
private getDefaultDimensions;
|
|
49
|
+
/**
|
|
50
|
+
* 単一テキストの埋め込み生成
|
|
51
|
+
*/
|
|
52
|
+
embed(text: string): Promise<number[]>;
|
|
53
|
+
/**
|
|
54
|
+
* バッチ埋め込み生成(Ollama固有実装)
|
|
55
|
+
*
|
|
56
|
+
* Ollamaはネイティブのバッチ処理をサポートしていないため、
|
|
57
|
+
* 並列リクエストで処理
|
|
58
|
+
*/
|
|
59
|
+
protected embedBatchInternal(texts: string[]): Promise<number[][]>;
|
|
60
|
+
/**
|
|
61
|
+
* 利用可能なモデル一覧取得
|
|
62
|
+
*/
|
|
63
|
+
listModels(): Promise<string[]>;
|
|
64
|
+
/**
|
|
65
|
+
* モデルの存在確認
|
|
66
|
+
*/
|
|
67
|
+
isModelAvailable(): Promise<boolean>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=OllamaEmbeddingProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OllamaEmbeddingProvider.d.ts","sourceRoot":"","sources":["../../src/embedding/OllamaEmbeddingProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAS;IAE5B,IAAI,UAAU,IAAI,MAAM,CAEvB;gBAEW,MAAM,GAAE,qBAA0B;IAa9C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA+B5C;;;;;OAKG;cACsB,kBAAkB,CACzC,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAmBtB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBrC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAQ3C"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ollama Embedding Provider
|
|
3
|
+
*
|
|
4
|
+
* Local embedding provider using Ollama
|
|
5
|
+
*
|
|
6
|
+
* @requirement REQ-RAG-001
|
|
7
|
+
* @design DES-KATASHIRO-003-RAG
|
|
8
|
+
*/
|
|
9
|
+
import { BaseEmbeddingProvider } from './BaseEmbeddingProvider.js';
|
|
10
|
+
/**
|
|
11
|
+
* Ollama Embeddingプロバイダー
|
|
12
|
+
*
|
|
13
|
+
* ローカルでOllamaを使用した埋め込み生成
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const provider = new OllamaEmbeddingProvider({
|
|
18
|
+
* baseUrl: 'http://192.168.224.1:11434',
|
|
19
|
+
* model: 'nomic-embed-text',
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* const embedding = await provider.embed('Hello, world!');
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class OllamaEmbeddingProvider extends BaseEmbeddingProvider {
|
|
26
|
+
name = 'ollama';
|
|
27
|
+
baseUrl;
|
|
28
|
+
model;
|
|
29
|
+
keepAlive;
|
|
30
|
+
_dimensions;
|
|
31
|
+
get dimensions() {
|
|
32
|
+
return this._dimensions;
|
|
33
|
+
}
|
|
34
|
+
constructor(config = {}) {
|
|
35
|
+
super(config);
|
|
36
|
+
this.baseUrl = config.baseUrl ?? 'http://localhost:11434';
|
|
37
|
+
this.model = config.model ?? 'nomic-embed-text';
|
|
38
|
+
this.keepAlive = config.keepAlive ?? '5m';
|
|
39
|
+
// nomic-embed-text: 768次元
|
|
40
|
+
// mxbai-embed-large: 1024次元
|
|
41
|
+
// all-minilm: 384次元
|
|
42
|
+
this._dimensions = config.dimensions ?? this.getDefaultDimensions(this.model);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* モデルごとのデフォルト次元数
|
|
46
|
+
*/
|
|
47
|
+
getDefaultDimensions(model) {
|
|
48
|
+
const dimensionMap = {
|
|
49
|
+
'nomic-embed-text': 768,
|
|
50
|
+
'mxbai-embed-large': 1024,
|
|
51
|
+
'all-minilm': 384,
|
|
52
|
+
'snowflake-arctic-embed': 1024,
|
|
53
|
+
'bge-m3': 1024,
|
|
54
|
+
};
|
|
55
|
+
// モデル名の先頭マッチで検索
|
|
56
|
+
for (const [key, dims] of Object.entries(dimensionMap)) {
|
|
57
|
+
if (model.includes(key)) {
|
|
58
|
+
return dims;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return 768; // デフォルト
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 単一テキストの埋め込み生成
|
|
65
|
+
*/
|
|
66
|
+
async embed(text) {
|
|
67
|
+
return this.withRetry(async () => {
|
|
68
|
+
const url = `${this.baseUrl}/api/embeddings`;
|
|
69
|
+
const response = await this.fetchWithTimeout(url, {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: {
|
|
72
|
+
'Content-Type': 'application/json',
|
|
73
|
+
},
|
|
74
|
+
body: JSON.stringify({
|
|
75
|
+
model: this.model,
|
|
76
|
+
prompt: text,
|
|
77
|
+
keep_alive: this.keepAlive,
|
|
78
|
+
}),
|
|
79
|
+
}, this.config.timeout);
|
|
80
|
+
const data = (await response.json());
|
|
81
|
+
// 次元数を実際の値で更新(初回のみ)
|
|
82
|
+
if (this._dimensions === 768 && data.embedding.length !== 768) {
|
|
83
|
+
this._dimensions = data.embedding.length;
|
|
84
|
+
}
|
|
85
|
+
return data.embedding;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* バッチ埋め込み生成(Ollama固有実装)
|
|
90
|
+
*
|
|
91
|
+
* Ollamaはネイティブのバッチ処理をサポートしていないため、
|
|
92
|
+
* 並列リクエストで処理
|
|
93
|
+
*/
|
|
94
|
+
async embedBatchInternal(texts) {
|
|
95
|
+
// 並列度を制限(5並列)
|
|
96
|
+
const concurrency = 5;
|
|
97
|
+
const results = new Array(texts.length);
|
|
98
|
+
for (let i = 0; i < texts.length; i += concurrency) {
|
|
99
|
+
const batch = texts.slice(i, i + concurrency);
|
|
100
|
+
const embeddings = await Promise.all(batch.map((text) => this.embed(text)));
|
|
101
|
+
embeddings.forEach((embedding, j) => {
|
|
102
|
+
results[i + j] = embedding;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return results;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 利用可能なモデル一覧取得
|
|
109
|
+
*/
|
|
110
|
+
async listModels() {
|
|
111
|
+
const url = `${this.baseUrl}/api/tags`;
|
|
112
|
+
const response = await this.fetchWithTimeout(url, {
|
|
113
|
+
method: 'GET',
|
|
114
|
+
});
|
|
115
|
+
const data = (await response.json());
|
|
116
|
+
// embeddingモデルをフィルタ(名前に embed を含むもの)
|
|
117
|
+
return data.models
|
|
118
|
+
.filter((m) => m.name.includes('embed') ||
|
|
119
|
+
m.name.includes('nomic') ||
|
|
120
|
+
m.name.includes('bge'))
|
|
121
|
+
.map((m) => m.name);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* モデルの存在確認
|
|
125
|
+
*/
|
|
126
|
+
async isModelAvailable() {
|
|
127
|
+
try {
|
|
128
|
+
const models = await this.listModels();
|
|
129
|
+
return models.some((m) => m.includes(this.model));
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=OllamaEmbeddingProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OllamaEmbeddingProvider.js","sourceRoot":"","sources":["../../src/embedding/OllamaEmbeddingProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Provider
|
|
3
|
+
*
|
|
4
|
+
* OpenAI API embedding provider
|
|
5
|
+
*
|
|
6
|
+
* @requirement REQ-RAG-001
|
|
7
|
+
* @design DES-KATASHIRO-003-RAG
|
|
8
|
+
*/
|
|
9
|
+
import { BaseEmbeddingProvider } from './BaseEmbeddingProvider.js';
|
|
10
|
+
import type { EmbeddingConfig } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* OpenAI Embedding設定
|
|
13
|
+
*/
|
|
14
|
+
export interface OpenAIEmbeddingConfig extends EmbeddingConfig {
|
|
15
|
+
/** APIキー */
|
|
16
|
+
apiKey?: string;
|
|
17
|
+
/** ベースURL(カスタムエンドポイント用) */
|
|
18
|
+
baseUrl?: string;
|
|
19
|
+
/** モデル名 */
|
|
20
|
+
model?: string;
|
|
21
|
+
/** 組織ID */
|
|
22
|
+
organization?: string;
|
|
23
|
+
/** エンコーディングフォーマット */
|
|
24
|
+
encodingFormat?: 'float' | 'base64';
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* OpenAI Embeddingプロバイダー
|
|
28
|
+
*
|
|
29
|
+
* OpenAI API(またはOpenAI互換API)を使用した埋め込み生成
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* // OpenAI API
|
|
34
|
+
* const provider = new OpenAIEmbeddingProvider({
|
|
35
|
+
* apiKey: process.env.OPENAI_API_KEY,
|
|
36
|
+
* model: 'text-embedding-3-small',
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* // OpenAI互換API(vLLM, LocalAI等)
|
|
40
|
+
* const localProvider = new OpenAIEmbeddingProvider({
|
|
41
|
+
* baseUrl: 'http://localhost:8000/v1',
|
|
42
|
+
* model: 'local-embedding-model',
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* const embedding = await provider.embed('Hello, world!');
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare class OpenAIEmbeddingProvider extends BaseEmbeddingProvider {
|
|
49
|
+
readonly name = "openai";
|
|
50
|
+
private readonly apiKey;
|
|
51
|
+
private readonly baseUrl;
|
|
52
|
+
private readonly model;
|
|
53
|
+
private readonly organization?;
|
|
54
|
+
private readonly encodingFormat;
|
|
55
|
+
private _dimensions;
|
|
56
|
+
get dimensions(): number;
|
|
57
|
+
constructor(config?: OpenAIEmbeddingConfig);
|
|
58
|
+
/**
|
|
59
|
+
* モデルごとのデフォルト次元数
|
|
60
|
+
*/
|
|
61
|
+
private getDefaultDimensions;
|
|
62
|
+
/**
|
|
63
|
+
* 単一テキストの埋め込み生成
|
|
64
|
+
*/
|
|
65
|
+
embed(text: string): Promise<number[]>;
|
|
66
|
+
/**
|
|
67
|
+
* バッチ埋め込み生成(OpenAI固有実装)
|
|
68
|
+
*
|
|
69
|
+
* OpenAI APIはネイティブでバッチ処理をサポート
|
|
70
|
+
*/
|
|
71
|
+
protected embedBatchInternal(texts: string[]): Promise<number[][]>;
|
|
72
|
+
/**
|
|
73
|
+
* 利用可能なモデル一覧取得
|
|
74
|
+
*/
|
|
75
|
+
listModels(): Promise<string[]>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* OpenAI互換プロバイダー(ファクトリ関数)
|
|
79
|
+
*
|
|
80
|
+
* vLLM, LocalAI, LM Studio等のOpenAI互換エンドポイント用
|
|
81
|
+
*/
|
|
82
|
+
export declare function createOpenAICompatibleEmbeddingProvider(baseUrl: string, model: string, config?: Partial<OpenAIEmbeddingConfig>): OpenAIEmbeddingProvider;
|
|
83
|
+
//# sourceMappingURL=OpenAIEmbeddingProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIEmbeddingProvider.d.ts","sourceRoot":"","sources":["../../src/embedding/OpenAIEmbeddingProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,YAAY;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACrC;AAmBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,QAAQ,CAAC,IAAI,YAAY;IAEzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,WAAW,CAAS;IAE5B,IAAI,UAAU,IAAI,MAAM,CAEvB;gBAEW,MAAM,GAAE,qBAA0B;IAa9C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS5C;;;;OAIG;cACsB,kBAAkB,CACzC,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAqDtB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAyBtC;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAC1C,uBAAuB,CAOzB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Provider
|
|
3
|
+
*
|
|
4
|
+
* OpenAI API embedding provider
|
|
5
|
+
*
|
|
6
|
+
* @requirement REQ-RAG-001
|
|
7
|
+
* @design DES-KATASHIRO-003-RAG
|
|
8
|
+
*/
|
|
9
|
+
import { BaseEmbeddingProvider } from './BaseEmbeddingProvider.js';
|
|
10
|
+
/**
|
|
11
|
+
* OpenAI Embeddingプロバイダー
|
|
12
|
+
*
|
|
13
|
+
* OpenAI API(またはOpenAI互換API)を使用した埋め込み生成
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // OpenAI API
|
|
18
|
+
* const provider = new OpenAIEmbeddingProvider({
|
|
19
|
+
* apiKey: process.env.OPENAI_API_KEY,
|
|
20
|
+
* model: 'text-embedding-3-small',
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* // OpenAI互換API(vLLM, LocalAI等)
|
|
24
|
+
* const localProvider = new OpenAIEmbeddingProvider({
|
|
25
|
+
* baseUrl: 'http://localhost:8000/v1',
|
|
26
|
+
* model: 'local-embedding-model',
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* const embedding = await provider.embed('Hello, world!');
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export class OpenAIEmbeddingProvider extends BaseEmbeddingProvider {
|
|
33
|
+
name = 'openai';
|
|
34
|
+
apiKey;
|
|
35
|
+
baseUrl;
|
|
36
|
+
model;
|
|
37
|
+
organization;
|
|
38
|
+
encodingFormat;
|
|
39
|
+
_dimensions;
|
|
40
|
+
get dimensions() {
|
|
41
|
+
return this._dimensions;
|
|
42
|
+
}
|
|
43
|
+
constructor(config = {}) {
|
|
44
|
+
super(config);
|
|
45
|
+
this.apiKey = config.apiKey ?? process.env.OPENAI_API_KEY ?? '';
|
|
46
|
+
this.baseUrl = config.baseUrl ?? 'https://api.openai.com/v1';
|
|
47
|
+
this.model = config.model ?? 'text-embedding-3-small';
|
|
48
|
+
this.organization = config.organization;
|
|
49
|
+
this.encodingFormat = config.encodingFormat ?? 'float';
|
|
50
|
+
// モデルごとのデフォルト次元数
|
|
51
|
+
this._dimensions = config.dimensions ?? this.getDefaultDimensions(this.model);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* モデルごとのデフォルト次元数
|
|
55
|
+
*/
|
|
56
|
+
getDefaultDimensions(model) {
|
|
57
|
+
const dimensionMap = {
|
|
58
|
+
'text-embedding-3-small': 1536,
|
|
59
|
+
'text-embedding-3-large': 3072,
|
|
60
|
+
'text-embedding-ada-002': 1536,
|
|
61
|
+
};
|
|
62
|
+
return dimensionMap[model] ?? 1536;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 単一テキストの埋め込み生成
|
|
66
|
+
*/
|
|
67
|
+
async embed(text) {
|
|
68
|
+
const embeddings = await this.embedBatchInternal([text]);
|
|
69
|
+
const result = embeddings[0];
|
|
70
|
+
if (!result) {
|
|
71
|
+
throw new Error('Failed to generate embedding');
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* バッチ埋め込み生成(OpenAI固有実装)
|
|
77
|
+
*
|
|
78
|
+
* OpenAI APIはネイティブでバッチ処理をサポート
|
|
79
|
+
*/
|
|
80
|
+
async embedBatchInternal(texts) {
|
|
81
|
+
return this.withRetry(async () => {
|
|
82
|
+
const url = `${this.baseUrl}/embeddings`;
|
|
83
|
+
const headers = {
|
|
84
|
+
'Content-Type': 'application/json',
|
|
85
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
86
|
+
};
|
|
87
|
+
if (this.organization) {
|
|
88
|
+
headers['OpenAI-Organization'] = this.organization;
|
|
89
|
+
}
|
|
90
|
+
const body = {
|
|
91
|
+
model: this.model,
|
|
92
|
+
input: texts,
|
|
93
|
+
encoding_format: this.encodingFormat,
|
|
94
|
+
};
|
|
95
|
+
// 次元数指定(text-embedding-3系のみサポート)
|
|
96
|
+
if (this._dimensions &&
|
|
97
|
+
(this.model.includes('text-embedding-3') ||
|
|
98
|
+
this.baseUrl !== 'https://api.openai.com/v1')) {
|
|
99
|
+
body.dimensions = this._dimensions;
|
|
100
|
+
}
|
|
101
|
+
const response = await this.fetchWithTimeout(url, {
|
|
102
|
+
method: 'POST',
|
|
103
|
+
headers,
|
|
104
|
+
body: JSON.stringify(body),
|
|
105
|
+
}, this.config.timeout);
|
|
106
|
+
const data = (await response.json());
|
|
107
|
+
// インデックス順にソート
|
|
108
|
+
const sortedData = [...data.data].sort((a, b) => a.index - b.index);
|
|
109
|
+
// 実際の次元数を更新
|
|
110
|
+
const firstItem = sortedData[0];
|
|
111
|
+
if (firstItem) {
|
|
112
|
+
this._dimensions = firstItem.embedding.length;
|
|
113
|
+
}
|
|
114
|
+
return sortedData.map((d) => d.embedding);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 利用可能なモデル一覧取得
|
|
119
|
+
*/
|
|
120
|
+
async listModels() {
|
|
121
|
+
const url = `${this.baseUrl}/models`;
|
|
122
|
+
const headers = {
|
|
123
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
124
|
+
};
|
|
125
|
+
if (this.organization) {
|
|
126
|
+
headers['OpenAI-Organization'] = this.organization;
|
|
127
|
+
}
|
|
128
|
+
const response = await this.fetchWithTimeout(url, {
|
|
129
|
+
method: 'GET',
|
|
130
|
+
headers,
|
|
131
|
+
});
|
|
132
|
+
const data = (await response.json());
|
|
133
|
+
// embeddingモデルをフィルタ
|
|
134
|
+
return data.data.filter((m) => m.id.includes('embedding')).map((m) => m.id);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* OpenAI互換プロバイダー(ファクトリ関数)
|
|
139
|
+
*
|
|
140
|
+
* vLLM, LocalAI, LM Studio等のOpenAI互換エンドポイント用
|
|
141
|
+
*/
|
|
142
|
+
export function createOpenAICompatibleEmbeddingProvider(baseUrl, model, config = {}) {
|
|
143
|
+
return new OpenAIEmbeddingProvider({
|
|
144
|
+
...config,
|
|
145
|
+
baseUrl,
|
|
146
|
+
model,
|
|
147
|
+
apiKey: config.apiKey ?? 'not-required', // 一部のローカルAPIはキー不要
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=OpenAIEmbeddingProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIEmbeddingProvider.js","sourceRoot":"","sources":["../../src/embedding/OpenAIEmbeddingProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding module exports
|
|
3
|
+
*/
|
|
4
|
+
export { EmbeddingManager } from './EmbeddingManager.js';
|
|
5
|
+
export { BaseEmbeddingProvider } from './BaseEmbeddingProvider.js';
|
|
6
|
+
export { MockEmbeddingProvider } from './MockEmbeddingProvider.js';
|
|
7
|
+
export type { MockEmbeddingProviderConfig } from './MockEmbeddingProvider.js';
|
|
8
|
+
export { OllamaEmbeddingProvider } from './OllamaEmbeddingProvider.js';
|
|
9
|
+
export type { OllamaEmbeddingConfig } from './OllamaEmbeddingProvider.js';
|
|
10
|
+
export { OpenAIEmbeddingProvider, createOpenAICompatibleEmbeddingProvider } from './OpenAIEmbeddingProvider.js';
|
|
11
|
+
export type { OpenAIEmbeddingConfig } from './OpenAIEmbeddingProvider.js';
|
|
12
|
+
export { AzureOpenAIEmbeddingProvider } from './AzureOpenAIEmbeddingProvider.js';
|
|
13
|
+
export type { AzureOpenAIEmbeddingConfig } from './AzureOpenAIEmbeddingProvider.js';
|
|
14
|
+
export { EmbeddingFactory, createEmbeddingProvider, getDefaultEmbeddingProvider, } from './EmbeddingFactory.js';
|
|
15
|
+
export type { EmbeddingProviderType, EmbeddingProviderConfigMap, } from './EmbeddingFactory.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/embedding/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AAChH,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,YAAY,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding module exports
|
|
3
|
+
*/
|
|
4
|
+
// Manager
|
|
5
|
+
export { EmbeddingManager } from './EmbeddingManager.js';
|
|
6
|
+
// Base
|
|
7
|
+
export { BaseEmbeddingProvider } from './BaseEmbeddingProvider.js';
|
|
8
|
+
// Providers
|
|
9
|
+
export { MockEmbeddingProvider } from './MockEmbeddingProvider.js';
|
|
10
|
+
export { OllamaEmbeddingProvider } from './OllamaEmbeddingProvider.js';
|
|
11
|
+
export { OpenAIEmbeddingProvider, createOpenAICompatibleEmbeddingProvider } from './OpenAIEmbeddingProvider.js';
|
|
12
|
+
export { AzureOpenAIEmbeddingProvider } from './AzureOpenAIEmbeddingProvider.js';
|
|
13
|
+
// Factory
|
|
14
|
+
export { EmbeddingFactory, createEmbeddingProvider, getDefaultEmbeddingProvider, } from './EmbeddingFactory.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embedding/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU;AACV,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO;AACP,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,YAAY;AACZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,uBAAuB,EAAE,uCAAuC,EAAE,MAAM,8BAA8B,CAAC;AAGhH,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG Package - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module @nahisaho/katashiro-rag
|
|
6
|
+
*/
|
|
7
|
+
export type { Document, Chunk, SearchResult, RetrievalResult, Vector, EmbeddingProvider, VectorStore, ChunkingConfig, RetrieverConfig, RAGEngineConfig, } from './types.js';
|
|
8
|
+
export { EmbeddingManager } from './embedding/index.js';
|
|
9
|
+
export { MockEmbeddingProvider } from './embedding/index.js';
|
|
10
|
+
export type { MockEmbeddingProviderConfig } from './embedding/index.js';
|
|
11
|
+
export { InMemoryVectorStore } from './vectordb/index.js';
|
|
12
|
+
export type { InMemoryVectorStoreConfig } from './vectordb/index.js';
|
|
13
|
+
export { DocumentChunker } from './chunking/index.js';
|
|
14
|
+
export { Retriever } from './Retriever.js';
|
|
15
|
+
export { RAGEngine } from './RAGEngine.js';
|
|
16
|
+
export { RAGPipeline, DEFAULT_RAG_SYSTEM_PROMPT, DEFAULT_CONTEXT_TEMPLATE } from './RAGPipeline.js';
|
|
17
|
+
export type { RAGPipelineConfig, RAGPipelineResult, RAGQueryOptions } from './RAGPipeline.js';
|
|
18
|
+
export { LLMReranker, rerankResults, DEFAULT_RERANKER_CONFIG, DEFAULT_RERANKER_PROMPT, } from './reranking/index.js';
|
|
19
|
+
export type { LLMRerankerConfig, RerankedResult, RerankerResponse, } from './reranking/index.js';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,eAAe,EACf,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG9F,OAAO,EACL,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG Package - Main Entry Point
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module @nahisaho/katashiro-rag
|
|
6
|
+
*/
|
|
7
|
+
// Embedding
|
|
8
|
+
export { EmbeddingManager } from './embedding/index.js';
|
|
9
|
+
export { MockEmbeddingProvider } from './embedding/index.js';
|
|
10
|
+
// Vector Store
|
|
11
|
+
export { InMemoryVectorStore } from './vectordb/index.js';
|
|
12
|
+
// Chunking
|
|
13
|
+
export { DocumentChunker } from './chunking/index.js';
|
|
14
|
+
// Retriever
|
|
15
|
+
export { Retriever } from './Retriever.js';
|
|
16
|
+
// RAG Engine
|
|
17
|
+
export { RAGEngine } from './RAGEngine.js';
|
|
18
|
+
// RAG Pipeline (REQ-RAG-101)
|
|
19
|
+
export { RAGPipeline, DEFAULT_RAG_SYSTEM_PROMPT, DEFAULT_CONTEXT_TEMPLATE } from './RAGPipeline.js';
|
|
20
|
+
// Reranking (REQ-RAG-103)
|
|
21
|
+
export { LLMReranker, rerankResults, DEFAULT_RERANKER_CONFIG, DEFAULT_RERANKER_PROMPT, } from './reranking/index.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,YAAY;AACZ,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,eAAe;AACf,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAGpG,0BAA0B;AAC1B,OAAO,EACL,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
|