๊ฐ์
OpenSearch Neural Sparse Search๋ OpenSearch 2.11๋ถํฐ ๋์ ๋ learned sparse retrieval ๊ธฐ๋ฐ์ ๊ฒ์ ๊ธฐ๋ฅ์ด๋ค1. ํฌ์ ๋ฒกํฐ(sparse vector)๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฏธ์ ๊ฒ์์ ์ํํ๋ฉฐ, inverted index๋ฅผ ํ์ฉํด BM25์ ์ ์ฌํ ์์ค์ ํจ์จ์ฑ์ ์ ๊ณตํ๋ฉด์๋ ๋ ๋์ ๊ฒ์ ์ ํ๋๋ฅผ ๋ฌ์ฑํ๋ค.
Neural Sparse Search๋ OpenSearch์ Neural Search ํ๋ฌ๊ทธ์ธ์ ์ผ๋ถ๋ก, ๋ฐ์ง ๋ฒกํฐ ๊ฒ์(HNSW)์ ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ ๊ณ์ฐ ๋น์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด์๋ ์ ํต์ ์ธ ์ดํ ๊ธฐ๋ฐ ๊ฒ์๋ณด๋ค ์ฐ์ํ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
ํต์ฌ ํน์ง
ํจ์จ์ ์ธ ๊ฒ์
- Inverted index ๊ธฐ๋ฐ: BM25์ ๋์ผํ ์ธ๋ฑ์ค ๊ตฌ์กฐ ์ฌ์ฉ
- ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ: ๋ฐ์ง ๋ฒกํฐ ์ธ๋ฑ์ค์ 7.2~10.4% ํฌ๊ธฐ
- ๊ฒ์ ์ RAM ๋น์ฉ ์ฆ๊ฐ ์์: ๋ค์ดํฐ๋ธ Lucene ์ธ๋ฑ์ค ์ฌ์ฉ
๋์ ๊ฒ์ ์ ํ๋
- NDCG@10 ๊ฐ์ : ์ ํต์ ๋ฐฉ๋ฒ ๋๋น 12.7%(doc-only) ~ 20%(bi-encoder) ํฅ์
- ์๋ฏธ์ ๋งค์นญ: Term expansion์ผ๋ก ๋์์ด, ๊ด๋ จ์ด ๊ฒ์
- ํด์ ๊ฐ๋ฅ์ฑ: ์ด๋ค ๋จ์ด๊ฐ ๊ฒ์์ ๊ธฐ์ฌํ๋์ง ํ์ธ ๊ฐ๋ฅ
์๋ ๋ฐฉ์
1. ํฌ์ ๋ฒกํฐ ์์ฑ
Neural Sparse Search๋ ํ ์คํธ๋ฅผ ํฌ์ ๋ฒกํฐ(token: weight ์์ ๋ฆฌ์คํธ)๋ก ๋ณํํ๋ค:
์
๋ ฅ ํ
์คํธ: "OpenSearch vector search"
โ Sparse encoding model
ํฌ์ ๋ฒกํฐ:
{
"opensearch": 0.85,
"vector": 0.72,
"search": 0.68,
"semantic": 0.32, // term expansion
"retrieval": 0.28 // term expansion
}
2. ์ธ๋ฑ์ฑ
ํฌ์ ๋ฒกํฐ๋ฅผ rank_features
ํ๋ ํ์
์ผ๋ก ์ ์ฅ:
{
"mappings": {
"properties": {
"content": { "type": "text" },
"content_embedding": { "type": "rank_features" }
}
}
}
Ingest pipeline์ ํตํด ์๋์ผ๋ก ์๋ฒ ๋ฉ ์์ฑ:
{
"sparse_encoding_ingest_processor": {
"field_map": {
"content": "content_embedding"
},
"model_id": "<model_id>"
}
}
3. ๊ฒ์
neural_sparse
์ฟผ๋ฆฌ๋ก ๊ฒ์:
{
"query": {
"neural_sparse": {
"content_embedding": {
"query_text": "vector database search",
"model_id": "<model_id>",
"max_token_score": 3.5
}
}
}
}
์ด์ ๋ชจ๋
OpenSearch Neural Sparse Search๋ ๋ ๊ฐ์ง ์ด์ ๋ชจ๋๋ฅผ ์ ๊ณตํ๋ค2.
Doc-only ๋ชจ๋ (๊ธฐ๋ณธ)
ํน์ง:
- ๋ฌธ์๋ง ์ ๊ฒฝ๋ง ์ธ์ฝ๋๋ก ์ฒ๋ฆฌ
- ์ฟผ๋ฆฌ๋ ํ ํฌ๋์ด์ ๋ก ๋ถ์ (DL analyzer ์ฌ์ฉ)
- ์จ๋ผ์ธ ์ถ๋ก ๋จ๊ณ ์ ๊ฑฐ๋ก ์ง์ฐ ์๊ฐ ๋ํญ ๊ฐ์
์ฅ์ :
- ๋น ๋ฅธ ๊ฒ์ ์๋
- ๋ฎ์ ๊ณ์ฐ ๋น์ฉ
- ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉ
๋จ์ :
- Bi-encoder ๋๋น ๊ฒ์ ์ ํ๋ ์ฝ๊ฐ ๋ฎ์
Bi-encoder ๋ชจ๋
ํน์ง:
- ๋ฌธ์์ ์ฟผ๋ฆฌ ๋ชจ๋ ์ ๊ฒฝ๋ง ์ธ์ฝ๋๋ก ์ฒ๋ฆฌ
- ์๋ฐฉํฅ ์๋ฏธ์ ๋งค์นญ
์ฅ์ :
- ๋์ ๊ฒ์ ์ ํ๋ (NDCG@10 20% ํฅ์)
- ๋ ํ๋ถํ ์๋ฏธ์ ํํ
๋จ์ :
- ์ฟผ๋ฆฌ๋ง๋ค ๋ชจ๋ธ ์ถ๋ก ํ์๋ก ์ง์ฐ ์๊ฐ ์ฆ๊ฐ
- ๋ ๋์ ๊ณ์ฐ ๋น์ฉ
์ฌ์ ํ์ต ๋ชจ๋ธ
OpenSearch๋ Hugging Face๋ฅผ ํตํด ๊ณต์ sparse encoding ๋ชจ๋ธ์ ์ ๊ณตํ๋ค.
v1 ๋ชจ๋ธ
opensearch-neural-sparse-encoding-v1 3
- ์ํคํ ์ฒ: BERT base (12-layer transformer)
- ํ๋ผ๋ฏธํฐ: 133M
- ์ถ๋ ฅ: 30,522์ฐจ์ ํฌ์ ๋ฒกํฐ (BERT vocabulary ํฌ๊ธฐ)
- ํ์ต ๋ฐ์ดํฐ: MS MARCO
- ์ฑ๋ฅ: NDCG@10 ํ๊ท 0.524
v2 ๋ชจ๋ธ
v2 ์๋ฆฌ์ฆ๋ distillation ๊ธฐ๋ฒ์ผ๋ก ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ๋ชจ๋ ๊ฐ์ ํ๋ค4.
opensearch-neural-sparse-encoding-v2-distill
- ์ํคํ ์ฒ: DistilBERT base
- ํ๋ผ๋ฏธํฐ: 67M (v1 ๋๋น 50% ๊ฐ์)
- ์ถ๋ ฅ: 30,522์ฐจ์ ํฌ์ ๋ฒกํฐ
- ํ์ต ๋ฐ์ดํฐ: MS MARCO, WikiAnswers, SQuAD, Yahoo Answers ๋ฑ 14๊ฐ ๋ฐ์ดํฐ์
- ์ฑ๋ฅ: NDCG@10 ํ๊ท 0.528 (v1 ๋๋น ๊ฐ์ )
- ํจ์จ์ฑ:
- GPU ์ฒ๋ฆฌ๋ 1.39๋ฐฐ ์ฆ๊ฐ
- CPU ์ฒ๋ฆฌ๋ 1.74๋ฐฐ ์ฆ๊ฐ
opensearch-neural-sparse-encoding-doc-v2-mini
- ์ํคํ ์ฒ: MiniLM base
- ํ๋ผ๋ฏธํฐ: 33M (v1 ๋๋น 75% ๊ฐ์)
- ์ฉ๋: Doc-only ๋ชจ๋ ์ ์ฉ
- ํจ์จ์ฑ:
- GPU ์ฒ๋ฆฌ๋ 1.74๋ฐฐ ์ฆ๊ฐ
- CPU ์ฒ๋ฆฌ๋ 4.18๋ฐฐ ์ฆ๊ฐ
multilingual-v1 ๋ชจ๋ธ (๋ค๊ตญ์ด ์ง์)
opensearch-neural-sparse-encoding-multilingual-v1 5
OpenSearch v3์์ ์ถ์๋ ์ต์ด์ ๋ค๊ตญ์ด neural sparse retrieval ๋ชจ๋ธ์ด๋ค.
- ์ํคํ ์ฒ: Multilingual transformer
- ํ๋ผ๋ฏธํฐ: 160M
- ์ถ๋ ฅ: 105,879์ฐจ์ ํฌ์ ๋ฒกํฐ (๋ค๊ตญ์ด vocabulary)
- ์ฑ๋ฅ:
- NDCG@10 ํ๊ท 0.629 (v2 ๋๋น ํฅ์)
- ํ๊ท FLOPS: 1.3
- ํ๊ท ์๋ฒ ๋ฉ ํฌ๊ธฐ: 138
- ์ง์ ์ธ์ด (15๊ฐ):
- ์๋์ด, ๋ฒต๊ณจ์ด, ์ค๊ตญ์ด, ์์ด, ํ๋๋์ด, ํ๋์ค์ด
- ํ๋์ด, ์ธ๋๋ค์์์ด, ์ผ๋ณธ์ด, ํ๊ตญ์ด, ํ๋ฅด์์์ด
- ๋ฌ์์์ด, ์คํ์ธ์ด, ์ค์ํ๋ฆฌ์ด, ํ ๋ฃจ๊ตฌ์ด
- ํ์ต ๊ธฐ๋ฒ: GTE์ LLM teacher ๋ชจ๋ธ์ ํ์ฉํ distillation
- ์ฑ๋ฅ: ๋ชจ๋ ์ธ์ด์์ BM25 ๋๋น ํฐ ์ฑ๋ฅ ํฅ์
์ค์ ์ ์ฝ์ฌํญ:
- ํ ํฐ ์ ํ: ๋ค๊ตญ์ด ๋ฌธ์๋ ์ฒซ 512 ํ ํฐ๋ง ์ฒ๋ฆฌ (์์ด ์ ์ฉ ๋ชจ๋ธ์ 8,192 ํ ํฐ)
- ๊ธด ํ๊ตญ์ด ๋ฌธ์์ ๊ฒฝ์ฐ ๋ฌธ์ ๋ถํ (chunking) ํ์
๋ชจ๋ธ ์ ํ ๊ฐ์ด๋
๋ชจ๋ธ | ํ๋ผ๋ฏธํฐ | ์ธ์ด | ์ฉ๋ | ์ฑ๋ฅ | ํจ์จ์ฑ |
---|---|---|---|---|---|
v1 | 133M | ์์ด | ๋ฒ์ฉ | ๊ธฐ๋ณธ | ๊ธฐ๋ณธ |
v2-distill | 67M | ์์ด | ๋ฒ์ฉ | ํฅ์ | 1.4~1.7x |
v2-mini | 33M | ์์ด | Doc-only | ํฅ์ | 1.7~4.2x |
multilingual-v1 | 160M | 15๊ฐ ์ธ์ด | ๋ค๊ตญ์ด | ์ต๊ณ | ์ค๊ฐ |
๊ถ์ฅ์ฌํญ:
- ์์ด ์ ์ฉ:
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ: v2-distill (์ฑ๋ฅ๊ณผ ํจ์จ์ฑ ๊ท ํ)
- CPU ํ๊ฒฝ: v2-mini (CPU์์ 4๋ฐฐ ์ด์ ๋น ๋ฆ)
- ๋์ ์ ํ๋ ํ์: v2-distill + bi-encoder ๋ชจ๋
- ํ๊ตญ์ด ๋๋ ๋ค๊ตญ์ด: multilingual-v1 (ํ๊ตญ์ด ๊ณต์ ์ง์)
Two-Phase ์๊ณ ๋ฆฌ์ฆ (OpenSearch 2.15+)
OpenSearch 2.15๋ถํฐ two-phase ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ฒ์ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ค6.
์๋ ์๋ฆฌ
์ฟผ๋ฆฌ ํ ํฐ์ ๋ ๊ทธ๋ฃน์ผ๋ก ๋ถ๋ฆฌ:
-
High-scoring tokens: ๊ฒ์ ๊ด๋ จ๋๊ฐ ๋์ ํ ํฐ
- ๋ชจ๋ ๋ฌธ์ ๋์ scoring ๋ฐ ํํฐ๋ง
- Top-k ๋ฌธ์ ์ ํ
-
Low-scoring tokens: ๊ฒ์ ๊ด๋ จ๋๊ฐ ๋ฎ์ ํ ํฐ
- Top-k ๋ฌธ์๋ง ๋์์ผ๋ก rescoring
์ฑ๋ฅ ํฅ์
Doc-only ๋ชจ๋:
- ์๋ ํฅ์: 1.22x ~ 1.78x
Bi-encoder ๋ชจ๋:
- ์๋ ํฅ์: 4.15x ~ 6.87x (๋ ํฐ ์ฑ๋ฅ ๊ฐ์ )
์ค์ ๋ฐฉ๋ฒ
Search pipeline ์์ฑ:
{
"request_processors": [
{
"neural_sparse_two_phase": {
"tag": "neural-sparse-two-phase",
"description": "Two-phase neural sparse processor",
"enabled": true
}
}
]
}
์ฟผ๋ฆฌ ์ pipeline ์ฌ์ฉ:
{
"query": {
"neural_sparse": {
"passage_embedding": {
"query_text": "what is a Manhattan Project",
"model_id": "<model_id>"
}
}
},
"search_pipeline": "two_phase_search_pipeline"
}
์ฑ๋ฅ ๋น๊ต
๊ฒ์ ์ ํ๋
๋ฐฉ๋ฒ | NDCG@10 | ๊ฐ์ ํญ |
---|---|---|
BM25 (๋ฒ ์ด์ค๋ผ์ธ) | 1.00x | - |
Neural Sparse (doc-only) | 1.127x | +12.7% |
Neural Sparse (bi-encoder) | 1.200x | +20.0% |
๋ฆฌ์์ค ์ฌ์ฉ๋
์งํ | Dense Vector | Neural Sparse |
---|---|---|
์ธ๋ฑ์ค ํฌ๊ธฐ | 100% | 7.2~10.4% |
๊ฒ์ ์ RAM ์ฆ๊ฐ | +7.9% | 0% |
๊ฒ์ ์๋ | ๋๋ฆผ (k-NN) | ๋น ๋ฆ (inverted index) |
Lucene ์์ง ์ ๊ทธ๋ ์ด๋ ํจ๊ณผ
OpenSearch 2.12์ Lucene ์์ง ์ ๊ทธ๋ ์ด๋๋ก neural sparse search ์ฑ๋ฅ์ด ํฌ๊ฒ ๊ฐ์ ๋์๋ค:
- ์ฒ๋ฆฌ๋(throughput) ํฅ์
- ์ง์ฐ ์๊ฐ(latency) ๊ฐ์
์ฌ์ฉ ๋ฐฉ๋ฒ
1. ๋ชจ๋ธ ๋ฑ๋ก ๋ฐ ๋ฐฐํฌ
POST /_plugins/_ml/models/_register
{
"name": "opensearch-neural-sparse-encoding-v2-distill",
"version": "1.0.0",
"model_format": "TORCH_SCRIPT",
"function_name": "SPARSE_ENCODING"
}
๋ชจ๋ธ ๋ฐฐํฌ:
POST /_plugins/_ml/models/<model_id>/_deploy
2. Ingest Pipeline ์์ฑ
PUT /_ingest/pipeline/neural-sparse-pipeline
{
"description": "Neural sparse encoding pipeline",
"processors": [
{
"sparse_encoding": {
"model_id": "<model_id>",
"field_map": {
"passage_text": "passage_embedding"
}
}
}
]
}
3. ์ธ๋ฑ์ค ์์ฑ ๋ฐ ๋งคํ
PUT /my_index
{
"settings": {
"index.default_pipeline": "neural-sparse-pipeline"
},
"mappings": {
"properties": {
"passage_text": { "type": "text" },
"passage_embedding": { "type": "rank_features" }
}
}
}
4. ๋ฌธ์ ์ธ๋ฑ์ฑ
POST /my_index/_doc
{
"passage_text": "OpenSearch provides neural sparse search capabilities for efficient semantic retrieval."
}
5. ๊ฒ์
GET /my_index/_search
{
"query": {
"neural_sparse": {
"passage_embedding": {
"query_text": "semantic search in OpenSearch",
"model_id": "<model_id>",
"max_token_score": 3.5
}
}
}
}
ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์
Neural Sparse Search๋ ๋ค๋ฅธ ๊ฒ์ ๋ฐฉ๋ฒ๊ณผ ๊ฒฐํฉํ์ฌ ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
BM25 + Neural Sparse
{
"query": {
"hybrid": {
"queries": [
{
"match": {
"passage_text": "vector search"
}
},
{
"neural_sparse": {
"passage_embedding": {
"query_text": "vector search",
"model_id": "<model_id>"
}
}
}
]
}
}
}
Dense + Sparse Vectors
๋ฐ์ง ๋ฒกํฐ์ ํฌ์ ๋ฒกํฐ๋ฅผ ๊ฒฐํฉํ RAG ์์คํ 7:
- 1์ฐจ ๊ฒ์: Neural Sparse๋ก ํ๋ณด ํํฐ๋ง
- 2์ฐจ ๊ฒ์: Dense vector๋ก ์ ๋ฐ ๋งค์นญ
- ์์ ๊ฒฐํฉ: RRF๋ก ์ฌ๋ฌ ๊ฒ์ ๊ฒฐ๊ณผ ์ตํฉ
- Re-ranking: Cross-encoder๋ก ์ต์ข ์์ ๊ฒฐ์
ํ์ฉ ์ฌ๋ก
์ํฐํ๋ผ์ด์ฆ ๊ฒ์
- ๋ด๋ถ ๋ฌธ์ ๊ฒ์: ํ์ฌ ๋ฌธ์, ์ํค, ์ง์ ๋ฒ ์ด์ค
- ์ฝ๋ ๊ฒ์: ์์ค ์ฝ๋, API ๋ฌธ์
- ์ด๋ฉ์ผ ๊ฒ์: ์๋ฏธ ๊ธฐ๋ฐ ์ด๋ฉ์ผ ๊ฒ์
E-commerce
- ์ํ ๊ฒ์: ๋์์ด, ์ ์ฌ ์ํ๋ช ์ฒ๋ฆฌ
- ์ถ์ฒ: ๊ด๋ จ ์ํ ์ถ์ฒ
- Q&A: ์ํ ๋ฌธ์ ์๋ ๋งค์นญ
RAG (Retrieval-Augmented Generation)
- ๋ฌธ์ ๊ฒ์: LLM์ ์ ๊ณตํ ๊ด๋ จ ๋ฌธ์ ๊ฒ์
- ์ฌ์ค ๊ฒ์ฆ: ์ ํํ ์ถ์ฒ ๋ฌธ์ ์ ๊ณต
- ์ปจํ ์คํธ ํ์ฅ: ๊ด๋ จ ์ ๋ณด ์๋ ์ถ๊ฐ
๊ณ ๊ฐ ์ง์
- FAQ ๋งค์นญ: ์ ์ฌ ์ง๋ฌธ ์๋ ๊ฒ์
- ํฐ์ผ ๋ผ์ฐํ : ๊ด๋ จ ๋ถ์ ์๋ ๋ถ๋ฅ
- ํด๊ฒฐ์ฑ ์ ์: ๊ณผ๊ฑฐ ์ด์ ๊ธฐ๋ฐ ํด๊ฒฐ์ฑ ์ถ์ฒ
๋ชจ๋ฒ ์ฌ๋ก
๋ชจ๋ ์ ํ
Doc-only ๋ชจ๋ ๊ถ์ฅ ์ํฉ:
- ๋๋ถ๋ถ์ ํ๋ก๋์ ํ๊ฒฝ (๊ธฐ๋ณธ ๊ถ์ฅ)
- ๋ฎ์ ์ง์ฐ ์๊ฐ์ด ์ค์ํ ๊ฒฝ์ฐ
- CPU ๋ฆฌ์์ค๊ฐ ์ ํ์ ์ธ ๊ฒฝ์ฐ
- DL (Deep Learning) analyzer์ ํจ๊ป ์ฌ์ฉ
Bi-encoder ๋ชจ๋ ๊ถ์ฅ ์ํฉ:
- ๊ฒ์ ์ ํ๋๊ฐ ์ต์ฐ์ ์ธ ๊ฒฝ์ฐ
- ์ฟผ๋ฆฌ ๋น๋๊ฐ ๋ฎ์ ๊ฒฝ์ฐ
- ์ถฉ๋ถํ GPU/CPU ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ
์ฑ๋ฅ ์ต์ ํ
- Two-phase ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ: OpenSearch 2.15+ ํ๊ฒฝ
- ์ ์ ํ ๋ชจ๋ธ ์ ํ: CPU ํ๊ฒฝ์์๋ v2-mini ๊ณ ๋ ค
- max_token_score ์กฐ์ : ์ฟผ๋ฆฌ ํน์ฑ์ ๋ฐ๋ผ ์๊ณ๊ฐ ์ต์ ํ
- ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์: BM25์ ๊ฒฐํฉํ์ฌ ๊ฐ๊ฑด์ฑ ํฅ์
์ ํ ์ฌํญ
- ์ธ์ด ์ง์:
- v1, v2 ๋ชจ๋ธ: ์์ด ์ ์ฉ
- multilingual-v1: 15๊ฐ ์ธ์ด ์ง์ (ํ๊ตญ์ด ํฌํจ)
- ๋ค๊ตญ์ด ๋ชจ๋ธ์ ํ ํฐ ์ ํ: 512 ํ ํฐ (์์ด ์ ์ฉ์ 8,192 ํ ํฐ)
- ๋ชจ๋ธ ํฌ๊ธฐ: ํฐ ๋ชจ๋ธ์ผ์๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ
- ํ์ต ๋ฐ์ดํฐ: ๋๋ฉ์ธ ํนํ ์ฑ๋ฅ ํฅ์์ ์ํด fine-tuning ํ์
๋ฒ์ ํ์คํ ๋ฆฌ
OpenSearch 2.11 (2023)
- Neural Sparse Search ์ต์ด ๋์
- Doc-only ๋ฐ bi-encoder ๋ชจ๋ ์ง์
- v1 ๋ชจ๋ธ ์ ๊ณต
OpenSearch 2.13 (2024)
- Neural Sparse Search Tool ๋์
- Agent ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ ์ง์
OpenSearch 2.15 (2024)
- Two-phase ์๊ณ ๋ฆฌ์ฆ ๋์
- Boolean compound query ์ง์
- 4~7๋ฐฐ ์๋ ํฅ์ (bi-encoder ๋ชจ๋)
OpenSearch 3.0 (2024-2025)
- multilingual-v1 ๋ชจ๋ธ ์ถ์
- 15๊ฐ ์ธ์ด ๊ณต์ ์ง์ (ํ๊ตญ์ด ํฌํจ)
- GTE ๋ฐ LLM teacher ๋ชจ๋ธ ๊ธฐ๋ฐ ํฅ์๋ ํ์ต ๊ธฐ๋ฒ
- v2 ๋๋น ์ฑ๋ฅ ํฅ์ (NDCG@10: 0.629)
๊ด๋ จ ๊ธฐ์
์ฐธ๊ณ ์๋ฃ
๊ณต์ ๋ฌธ์
- Neural sparse search - OpenSearch Documentation
- Neural sparse query - OpenSearch Documentation
- Two-phase processor - OpenSearch Documentation
- Pretrained models - OpenSearch Documentation
๋ธ๋ก๊ทธ ๋ฐ ํํ ๋ฆฌ์ผ
- Introducing the neural sparse two-phase algorithm - OpenSearch
- Improving search efficiency with v2 models - OpenSearch
- OpenSearch Neural Sparse Search Tutorial - Sease
- Neural Search on OpenSearch - Medium
AWS ์๋ฃ
๋ชจ๋ธ ์ ์ฅ์
- opensearch-neural-sparse-encoding-v1 - Hugging Face
- opensearch-neural-sparse-encoding-v2-distill - Hugging Face
- opensearch-neural-sparse-encoding-doc-v2-mini - Hugging Face
- opensearch-neural-sparse-encoding-multilingual-v1 - Hugging Face
Footnotes
-
OpenSearch ๊ณต์ ๋ฌธ์์์๋ doc-only ๋ชจ๋๋ฅผ ๊ธฐ๋ณธ ๊ถ์ฅ ์ค์ ์ผ๋ก ์ ์ํ๋ค โฉ
-
v2 ๋ชจ๋ธ์ heterogeneous teacher ๋ชจ๋ธ์์ distillationํ๋ ๋ฐฉ์์ด InfoNCE loss๋ก ์ฌ์ ํ์ตํ๋ ๊ฒ๋ณด๋ค ํจ๊ณผ์ ์์ ๋ณด์ฌ์ค โฉ
-
opensearch-neural-sparse-encoding-multilingual-v1 - Hugging Face โฉ
-
Neural sparse two-phase processor๋ ๊ฒ์ ๊ด๋ จ๋์ ๋ฏธ๋ฏธํ ์ํฅ๋ง ์ฃผ๋ฉด์ ์ต๋ 9.8๋ฐฐ ์๋ ํฅ์ ๋ฌ์ฑ โฉ