# ベクトル検索

| 要件 | 値 |
|----|----|
| ログインの有無 | True |
| エンドポイント | /v1/search |
| メソッド | GET |

## 概要

抽象的なキーワードでの検索を行う。

### 例

「走る人」で調べたら画像内に走ってる人と思われるものが結果として表示される。またはファイル名などで似ているものが表示される。

### 検索欄可能文字列

255文字

### 対応文字種

#### 日本語文字

* ひらがな(あ～ん)
* カタカナ(ア～ン)
* 漢字(CJK Unified Ideographs)

#### 英数字

* A-Z/a-z
* 0-9(全角・半角)

#### 記号

* 一般記号：_ . / @ # & % ? !
* かっこ類：() \[\] {} <>
* 句読点：、 。 ， ．

## 必要なデータ

| キー | 値の種類 | 必須 | 説明 |
|------|---------|------|------|
| type | String | True | ベクトル検索=vector / ファイル名=filename / アカウント名=account / OCR=ocr / 内容=content |
| keyword | String | True | 検索キーワード（最大255文字）|

## 表示するデータ

| キー | 値の種類 |
|----|----|
| result_keyword | String |

## 実装要件

### 必要なコンポーネント

| コンポーネント | 技術 | 備考 |
|---|---|---|
| ベクトルDB | Qdrant | HNSW近傍探索、詳細: [インフラ/ベクトル検索基盤.md](../インフラ/ベクトル検索基盤.md) |
| 埋め込みサービス | Python FastAPI + multilingual-e5 | ファイルアップロード時に非同期実行 |
| メインAPI | Rust (Axum) | Qdrant への問い合わせ |

### 処理タイミング
ファイルアップロード時に非同期でベクトル化・Qdrant登録を行う。
