back
RAG , ローカル検索 Node.js LLM Ollama
id: 187, 2025-05-22
### 音声概要
・AIで生成された 音声概要になります。
### 概要
- RAG , ローカル検索 作成メモになります。
- LLMは、Gemini
- Ollama: mxbai-embed-large model も使用。
- RAGは、知識ないのですが。関連ページを参考に検索できそうでした。
[ 公開 2025/05/11 ]
### 構成
- LLM: gemini
- Ollama: mxbai-embed-large model
- node20
- @langchain/textsplitters
- Vercel AI SDK
- SQLite
### 関連
### 書いたコード
- .env
GOOGLE_GENERATIVE_AI_API_KEY="key"
- ベクトル変換
- ローカルの、mdファイル等を読込む。
npx tsx src/embed.ts
- start
npm run dev
- プロンプト参考
メール 検索して欲しい
- 出力例
>yarn dev
yarn run v1.22.22
$ tsx src
input:メール 検索して欲しい
input= メール 検索して欲しい
formatted query:
***
artifact:
了解しました。現状のメモから、メールに関する情報をまとめます。
**メール関連情報まとめ**
* **メール送信機能:**
* nodemailerのgmailサービスを使用してメール配信を行う。
* 購入品の登録後、メール配信する処理を実装。
* **設定:**
* gmail経由で送信するため、Googleアカウントとアプリパスワードが必要。
* アプリパスワードは、Googleアカウントのセキュリティ設定から発行。
* `.env`ファイルに以下の環境変数を設定:
* `GOOGLE_MAIL_USER`: メール送信元
* `GOOGLE_MAIL_PASSWORD`: アプリパスワード
* `GOOGLE_MAIL_SENDTO`: 送信先
* **プロンプト例:**
* `addItemMail を使って、 バス代 , 210 JPY を送信して欲しい。`
**検索結果:**
このメモの中では、メール送信機能の実装と設定、そしてプロンプト例が記載されています。特に、nodemailerとgmailサービスを利用したメール送信、アプリパスワードの設定、そして環境変数の設定が重要です。
**補足:**
* Vercel AI SDKを使用しているため、Vercel環境でのデプロイを想定していると思われます。
* d1 + CF workers構成なので、Cloudflare Workers上で動作するデータベース(d1)を使用していることがわかります。
この情報で、メールに関する検索は完了でしょうか?他に何か知りたい情報があれば、具体的に質問してください。例えば、「メール送信処理の具体的なコード例は?」や「エラーハンドリングはどうなっている?」など。
Done in 5.24s.
- mcp-cli-9/src/embed.ts
- CharacterTextSplitterで、chunk処理する。
- mxbai-embed-large: ベクトル化
async function Embed(content, meta) {
const chunkSizeMax = 500;
const textSplitter = new CharacterTextSplitter({
chunkSize: chunkSizeMax,
chunkOverlap: 0,
});
const texts = await textSplitter.splitText(content);
for (let i = 0; i < texts.length; i++) {
let target = texts[i];
const res = await ollama.embed({
model: "mxbai-embed-large",
truncate: true,
input: target,
});
meta.model = res.model;
const f = new Float32Array(res.embeddings.flat())
saveToDb(f, meta, target);
}
return;
}
https://github.com/kuc-arc-f/mcp_client_7ex/blob/main/mcp-cli-9/src/embed.ts
- mcp-cli-9/src/tools/searchRag.ts
- generateText : vector database から取得した。検索対象を送信
https://github.com/kuc-arc-f/mcp_client_7ex/blob/main/mcp-cli-9/src/tools/searchRag.ts
### RAG 検索画面、 Electron + React
- RAG 検索画面の追加、electron メモになります。
- 前回の、RAG CLI操作の続編になります。
- CLIの 作成した。vector database(SQLite) を使用できます。
- CLI版の検索部分に electron画面に、実装する。
- Ollama mxbai-embed-largeも、使用します。
### 構成
- electron
- React
- LLM: gemini
- Ollama: mxbai-embed-large model
- node20
- @langchain/textsplitters
- Vercel AI SDK
- SQLITE
- .env
- VITE_GOOGLE_GENERATIVE_AI_API_KEY: gemini の鍵
- VITE_VECTOR_DB_PATH: vector database の配置パス
VITE_GOOGLE_GENERATIVE_AI_API_KEY="api-key"
#RAG
VITE_VECTOR_DB_PATH="./embedblob.db"
- start
yarn start
### 書いたコード
- 検索処理, 前のCLI版と ほぼ同様です。
- mcp-client-ui-9/src/tools/searchRag.ts
https://github.com/kuc-arc-f/mcp_client_7ex/blob/main/mcp-client-ui-9/src/tools/searchRag.ts
### Next.js +Gemini , RAG ローカル検索
- 簡易版 RAG 検索画面の追加、Next.js 試作になります。
- 前回の、RAG CLI操作の続編になります。
- CLIの 作成した。vector database(SQLite) を使用できます。
- 今回は、 LLM: geminiのみ。
### 構成
- Next.js
- React
- LLM: gemini
- node20
- @langchain/textsplitters
- Vercel AI SDK
- SQLITE
- .env
- GOOGLE_GENERATIVE_AI_API_KEY: gemini の鍵
- GOOGLE_API_KEY: gemini text-embedding-004, の鍵
GOOGLE_GENERATIVE_AI_API_KEY="api-key"
GOOGLE_API_KEY="api-key"
- start
yarn dev
### 書いたコード
- https://github.com/kuc-arc-f/mcp_client_7ex/tree/main/mcp-next-4
- CLI
- https://github.com/kuc-arc-f/mcp_client_7ex/tree/main/mcp-cli-10
- 検索処理
- mcp-next-4/app/tools/searchRag.ts
https://github.com/kuc-arc-f/mcp_client_7ex/blob/main/mcp-next-4/app/tools/searchRag.ts