핵심 개념: 임베딩/벡터검색, 환각, 양자화, 멀티모달 리서치 원본 — 2026-07-25
불변 캡처. 절대 편집하지 마라. 가공본은 위키 페이지에.
조사 방법
검색어
embedding model selection 2025 dimensions normalization cosine similarity vector database comparison pgvector Qdrant Pineconehybrid search BM25 vector reranking chunking strategy RAG best practices 2025LLM hallucination causes types mitigation grounding self-verification measurement 2025LLM quantization GGUF AWQ GPTQ FP8 quality degradation bits VRAM calculation 2025multimodal LLM image token pricing tiling resolution vision OCR practical pitfalls GPT-4o Gemini Claude 2025reciprocal rank fusion RRF formula k=60 constant hybrid search Qdrant Elasticsearchlong context vs RAG 2025 does long context replace RAG conclusion cost latencyOpenAI text-embedding-3-small text-embedding-3-large dimensions Matryoshka Cohere embed v3 bge-m3 MTEB 2025
WebFetch 로 실제 열어본 URL (6건)
- https://jarvislabs.ai/blog/vllm-quantization-complete-guide-benchmarks — 양자화 벤치마크 (열림, 상세 표 획득)
- https://blog.roboflow.com/image-token-cost-vlm/ — 이미지 토큰 과금 공식 (열림, 단 미래 모델명 주의)
- https://www.lakera.ai/blog/guide-to-hallucinations-in-large-language-models — 환각 (열림)
- https://superlinked.com/vectorhub/articles/optimizing-rag-with-hybrid-search-reranking — 리랭킹 (열림, 홈페이지 발췌만 나옴 — 상세 부족)
- https://machinelearningmastery.com/the-complete-guide-to-vector-databases-for-machine-learning/ — 벡터DB 비교 (열림)
- https://blog.somecreativity.com/2025/09/27/embeddings-similarity-metrics/ — 유사도 지표 (열림)
- https://www.buildmvpfast.com/blog/hybrid-search-rag-vector-keyword-reranking-2026 — 403 Forbidden (못 열음)
확인된 사실 [신뢰도]
(1) 임베딩과 벡터 검색
임베딩 차원 / 모델 선택
- OpenAI text-embedding-3-large = 기본 3072차원, Matryoshka 로 256 또는 1024 로 truncate 가능. text-embedding-3-small = 1536차원, throughput 최적화. [MED] (learn.engineering.vips.edu, weaviate.io 검색 요약)
- OpenAI 발표: text-embedding-3-large 를 256차원으로 줄여도 구형 ada-002 의 1536차원보다 MTEB 에서 높다. [MED] (weaviate.io, supabase.com)
- Matryoshka Representation Learning = 앞쪽 차원에 정보를 집중시켜 벡터를 잘라도(truncate) 성능이 유지되게 학습하는 기법. 저장/검색 비용 절감. Supabase 는 "Adaptive Retrieval" 로 5배 빠른 검색 사례 제시. [MED] (supabase.com/blog/matryoshka-embeddings)
- 검색 요약이 준 경쟁 구도(⚠ aggregator, 검증 안 됨): Cohere Embed v4 = 1536차원(v3 는 1024), Matryoshka 256/512/1024/1536 지원. MTEB 점수는 Cohere embed-v4 65.2 / OpenAI text-3-large 64.6 / BGE-M3 63.0 로 요약됨. 벤치 점수는 규격 §5 상 위키에 인용 금지, 여기 기록만. [MED]
- 임베딩 모델이 검색 품질을 결정한다. DB(pgvector→Pinecone) 를 바꿔도 임베딩이 도메인 의미를 못 잡으면 소용없다. 범용 모델(OpenAI, Cohere)은 대부분 텍스트에 잘 맞고, 의료·법률·코드 같은 특수 도메인은 fine-tune 모델이 낫다. [MED] (machinelearningmastery.com 검색 요약)
정규화 / 유사도 지표 - 코사인 유사도 = 벡터 사이 각도 측정, 크기(magnitude) 무시. 방향이 의미를 인코딩하고 스케일은 무의미할 때 적합. [HIGH] (blog.somecreativity.com, 일반 통념 일치) - 정규화(L2 norm 으로 나눠 길이 1) 된 벡터에서는 코사인 유사도와 내적(dot product) 이 랭킹상 동일하다. 내적은 곱·합만 하면 되어 유클리드보다 빠름(정규화 임베딩에서 약 1.1배). [HIGH] (blog.somecreativity.com) - OpenAI 임베딩은 이미 정규화되어 나오므로 유클리드와 코사인 랭킹이 동일. [HIGH] (blog.somecreativity.com) - 대부분 벡터DB(FAISS, Pinecone, Weaviate, Milvus)는 코사인을 "한 번 정규화 후 내적" 으로 구현. [MED] (검색 요약) - 정규화가 항상 옳은 건 아니다: 추천 시스템처럼 magnitude 가 인기도/판매량/활동량을 인코딩하면 정규화하면 정보 손실. Yahoo Prod2Vec 은 unnormalized 임베딩으로 인기 신호를 살림. [MED] (blog.somecreativity.com) - 규칙: 임베딩 모델이 학습 때 쓴 지표에 맞춰라. [HIGH] (blog.somecreativity.com)
벡터DB 지형 / 인덱스 - HNSW(Hierarchical Navigable Small World): 다층 그래프, 검색 O(log N), recall·속도 우수하지만 그래프 전체를 메모리에 유지해야 함. 지연 민감 + 중간 규모에 적합. [MED] (machinelearningmastery.com) - IVF(Inverted File): K-means 클러스터링으로 공간 분할, 관련 클러스터만 탐색. 전형적으로 벡터의 ~1% 만 검사하며 recall >90% 유지. HNSW 보다 메모리 적게 쓰고 대규모에 적합, 대신 동일 속도에서 recall 낮음. [MED] - PQ(Product Quantization): 서브벡터 클러스터링으로 100~1000배 압축, 정확도 손실. IVF 와 결합이 효과적. [MED] - 벤더 강점 요약표 (machinelearningmastery.com): - Pinecone = 완전관리형, 운영 최소화 (인프라 피하고 싶은 팀) - Weaviate = GraphQL 스키마 + 벡터 (의미 + 정형 데이터) - Chroma = DX·단순함 (프로토타입, 중소 규모) - Qdrant = Rust 기반 고성능 (성능 크리티컬) - Milvus = 대규모(수십억 벡터, 클러스터) - pgvector = PostgreSQL 통합 (기존 Postgres 유저) - 실무 가이드: 벡터DB 는 수백만 벡터 + 저지연 필요할 때만. 10만 미만이면 brute-force NumPy 로 충분. recall 목표 90~95%(95% 넘으면 수확체감). 흔한 차원 1024~1536. [MED] (machinelearningmastery.com)
하이브리드 검색 / 리랭킹 / 청킹
- 하이브리드 검색 = BM25(sparse)와 벡터(dense)를 병렬 실행 → RRF 로 랭킹 리스트 융합 → (선택) cross-encoder 리랭크 → top-K 를 LLM 에 전달. sparse+dense 하이브리드가 단독보다 우수. [MED] (infoq.com, superlinked.com 검색 요약)
- BM25 는 벡터가 놓치는 exact-match(기술 용어, 식별자, 코드, 인용 문자열)를 잡음. BM25 없는 RAG 는 체계적 사각지대를 가짐. [MED] (aloknecessary.github.io, infoq.com)
- RRF(Reciprocal Rank Fusion) 공식: score(d) += 1 / (k + rank(d)), rank 는 1부터 시작. [HIGH] (blog.serghei.pl, elastic.co, Cormack-Clarke-Büttcher 2009)
- k 기본값 = 60 (2009 논문 권장, 20년 가까이 벤치에서 유지). k 작으면 상위 랭크 지배, 크면 하위까지 영향 분산. RRF 는 튜닝 불필요하고 서로 무관한 신호도 잘 융합. [HIGH] (elastic.co, bigdataboutique.com)
- Qdrant 는 v1.10 부터 서버사이드 RRF 네이티브 지원, k 파라미터 설정 가능. Elasticsearch 는 rrf retriever + weighted RRF(weight × 1/(rank + rank_constant)) 지원. Weaviate, OpenSearch, Azure AI Search 도 RRF 내장. [MED] (elastic.co, qdrant.tech)
- 리랭킹: 초기 검색은 recall 최적화, 리랭커는 precision 최적화. top-20 을 리랭크 없이 LLM 에 그냥 넣는 건 낭비 — 컨텍스트 한계로 top-5 만 넣을 수 있을 때 특히 품질 크게 개선. cross-encoder(Cohere rerank, bge-reranker) 사용. [MED] (superlinked.com, buildmvpfast 검색 요약)
- 청킹 전략: 고정 크기(예 512토큰 + 50토큰 overlap)는 문장·문단 경계를 잘라 임베딩 품질 저하. 의미 기반(semantic) 청킹은 문단·섹션·문장 자연 경계로 분할. 계층(hierarchical) 청킹은 부모(전체 섹션)+자식(문장) 청크 동시 유지. [MED] (검색 요약)
- 쿼리별 가중치: 모든 쿼리에 정적 weight 는 나쁨. 최소한 쿼리에 코드 패턴·식별자·인용 문자열 있는지 감지해 sparse/dense weight 조정. [MED] (검색 요약)
롱컨텍스트 vs RAG 논쟁 (2025 결론) - 결론: 롱컨텍스트가 RAG 를 대체하지 않는다. 각자 다른 제약에 맞는다. [MED] (ragflow.io, meilisearch.com, unstructured.io 검색 요약) - 롱컨텍스트 적합: 경계가 있는 1회성 분석, 전체 자료를 넣는 비용이 감당될 때, 지연·비용 덜 민감 + 고정 쿼리 패턴(계약 검토, 정형 리포트 분석). - RAG 적합: 크거나 변하는 컬렉션. 검색으로 노이즈·토큰·지연·비용 줄임. Elasticsearch 실험상 RAG 가 unfiltered 롱컨텍스트보다 정확 + 저지연 + 저비용. - 롱컨텍스트 단점: attention 의 quadratic scaling 으로 추론 비용 급증, 컨텍스트 늘수록 무관/노이즈 정보 유입 가능성 증가(needle-in-haystack 실패). [MED]
(2) 환각(hallucination)
유형 분류 - 2대 분류: factuality(사실성) 오류 = 세상 사실에 어긋남(예: 튜링 출생 1925 라고 함, 실제 1912). vs faithfulness(충실성) 오류 = 주어진 컨텍스트·프롬프트를 왜곡. [HIGH] (lakera.ai, 다수 서베이 일치) - (교차 축) intrinsic = 입력과 모순 / extrinsic = 입력으로 검증 불가한 내용 생성 (서베이 통념). [MED]
근본 원인 - next-token 디코딩이 진실이 아니라 그럴듯함(plausibility) 을 최적화. [HIGH] (lakera.ai, 검색 요약 다수) - 2025 프레이밍: 구조적 인센티브 문제 — 학습·벤치마크가 abstention("모른다")을 페널티 주고, 불확실성 표현보다 자신있는 추측을 보상. [MED] (lakera.ai) - 그 외: 웹스케일 학습데이터의 노이즈·모순·오류, 모델 아키텍처 quirk·exposure bias, 디코딩 랜덤성(temperature/sampling), 롱컨텍스트의 needle 실패, RAG 파이프라인이 새 실패면 도입(검색 청크 무시·오독·초과 추론). [MED] (lakera.ai, futureagi 검색 요약)
완화 기법 - 단계별로 정리(검색 요약): memory 단계 = RAG·지식베이스 질의 / reasoning 단계 = Chain-of-Thought, self-consistency / instruction 단계 = constrained prompting, self-reflection, post-hoc verification. [MED] - Chain-of-Verification (CoVe): 모델이 검증 질문을 생성하고 스스로 답한 뒤 최종 응답 확정 → 환각 감소. [MED] (검색 요약) - grounding = 생성 텍스트를 정형 지식에 연결해 사실성 향상. RAG + span-level verification: 각 주장(claim)을 검색 근거와 매칭, 미지원이면 flag. [MED] (lakera.ai) - Lakera 가 든 5대 전략: calibration-aware rewards(불확실성 신호에 크레딧), targeted finetuning(NAACL 2025 연구에서 환각률 약 90~96% 감소, 품질 유지), RAG+span verification, 후보 응답 리랭킹(경량 factuality 지표), 내부 탐지(CLAP=Cross-Layer Attention Probing, MetaQA). [MED] (lakera.ai) - grounding·abstention·verification·constrained output 은 각각 다른 오류 클래스를 자르며 조합이 단일 기법보다 훨씬 효과적. [MED] (검색 요약) - 온도/구조화: 디코딩 랜덤성(temperature) 이 원인 중 하나 → 낮추면 결정론적. 구조화 출력(constrained)으로 형식 강제. 주의: 규격 §7 상 Claude Opus 4.7/4.8/5·Fable 5 에서 temperature 는 400 에러 — Claude 계열은 온도 조절 불가, 프롬프팅으로 대체. [HIGH] (WIKI_SPEC §7)
측정 / 탐지 - SelfCheckGPT: zero-resource black-box. 외부 자원 없이, 같은 프롬프트로 여러 번 샘플링해 응답 간 일관성으로 환각 탐지(모델이 잘 아는 주제면 일관된 사실을 냄). [MED] (검색 요약) - 벤치마크(검색 요약): Mu-SHROOM(다국어), CCHall(멀티모달), REFIND(span verification). [MED] (lakera.ai) - 내부 프로브: CLAP(활성값으로 분류기 학습), MetaQA(metamorphic 프롬프트 변형). [MED] (lakera.ai) - 방향 전환: "환각 제로" 추구 → calibrated uncertainty(교정된 불확실성) + 투명한 신뢰도 신호로. [MED] (lakera.ai)
(3) 양자화(quantization)
포맷 개요 - GGUF = llama.cpp / Ollama 용 파일 포맷(양자화 알고리즘 아님). Q2_K~Q8_0 레벨. CPU+GPU 하이브리드 추론. Q4_K 는 256-weight 블록 + 8 서브블록, Q4_K_M 유효 ~4.5 bits/weight. [MED] (jarvislabs.ai, 검색 요약) - AWQ(Activation-aware Weight Quantization): activation 큰 "salient" weight 보호, per-channel 스케일링, 캘리브레이션셋 128~512 샘플 필요. [MED] (jarvislabs.ai) - GPTQ(General Post-Training Quantization): Hessian(2차 정보)로 오차 보상, column 단위 양자화, group size 보통 128. AWQ 보다 품질 약간 높으나 양자화 자체는 느림. [MED] (jarvislabs.ai) - FP8 = 8bit 부동소수, H100 이상 지원, FP16 대비 거의 동품질 + 메모리 50% 절감. [MED] (검색 요약) - Marlin = 양자화 아님, CUDA 커널. 기존 GPTQ/AWQ 모델에 적용해 GPTQ 2.6배 / AWQ 10.9배 속도. [MED] (jarvislabs.ai) - BitsandBytes = 로딩 시 on-the-fly 양자화(사전 양자화 모델 불필요), NF4/FP4 지원, block size 64. perplexity 보존 최고. [MED] (jarvislabs.ai)
비트수별 품질 저하 실측 (jarvislabs.ai, Qwen2.5-32B, Wikitext-2 perplexity) [MED] | 기법 | Perplexity | FP16 대비 저하 | |---|---|---| | FP16 baseline | 6.56 | — | | BitsandBytes 4bit | 6.67 | +1.7% | | GGUF Q4_K_M | 6.74 | +2.7% | | AWQ 4bit | 6.84 | +4.3% | | GPTQ 4bit | 6.90 | +5.2% | | Marlin-GPTQ | 6.97 | +6.3% | - 모든 4bit 기법이 baseline 대비 perplexity ~6% 이내 → 4bit 은 실용적. [MED]
코드 생성 품질 (HumanEval Pass@1, jarvislabs.ai) [MED] - FP16 56.1% / AWQ·Marlin-AWQ·GGUF·BitsandBytes 51.8% (−4.3%p) / GPTQ·Marlin-GPTQ 46% (−10%p). → 코딩 태스크에서 GPTQ 저하가 두드러짐.
속도 (ShareGPT throughput, jarvislabs.ai) [MED] - FP16 461 tok/s / Marlin-AWQ 741(+60.7%) / Marlin-GPTQ 712(+54.4%). Marlin 커널 없는 AWQ 68 tok/s(−85%), GGUF Q4_K_M 93 tok/s(−80%, vLLM 에서). 핵심: "커널이 알고리즘보다 중요" — Marlin 이 GPTQ 2.6배·AWQ 10.9배. GGUF 는 vLLM 에선 느리지만 llama.cpp 용으로 설계됨(TTFT 958ms 로 매우 높음). [MED]
VRAM 계산 감각 [MED] - 32B 모델 FP16 는 60GB+ 먹음(jarvislabs.ai). 4bit 이면 극적 감소. - 8.2B 모델 예시(검색 요약): FP16≈16GB / FP8≈8GB / AWQ·GPTQ Int4≈6GB / GGUF Q4_K_M≈5GB. - 대략 규칙: 모델 파라미터(B) × bytes/param = weight VRAM. FP16=2 bytes/param, FP8/INT8=1, 4bit≈0.5. + KV 캐시·activation 오버헤드 별도.
언제 실용적인가 [MED] - GGUF Q5_K_M·Q6_K 는 near-BF16 품질, Q2_K 는 눈에 띄는 저하. Q4_K_M 이 로컬 실험 기본 추천(Ollama/LM Studio). - 프로덕션 NVIDIA GPU 배포는 vLLM + AWQ(Marlin)가 속도·품질 균형 최선. [MED] - vLLM 지원: AWQ, GPTQ, Marlin, GGUF, BitsandBytes 지원. 8bit BitsandBytes 는 제한적. [MED] (jarvislabs.ai)
(4) 멀티모달
이미지 토큰 과금 방식 (기본 메커니즘 — 3가지 계열)
- GPT 계열(타일): 이미지를 축소 후 512×512 타일로 분할, 타일당 ~170 토큰 + base 85 토큰. detail: low 는 85 토큰 고정, high 는 타일 계산. [MED] (검색 요약 — 이건 GPT-4o 세대 확립된 방식)
- GPT 신세대(패치): 최신은 32×32 픽셀 패치 기반. ceil(w/32)×ceil(h/32) = 토큰 수 (roboflow 는 "GPT-5.5" 로 표기 — ⚠ 모델명 미확인). [MED]
- Claude 계열(면적): 토큰 ≈ (width × height) / 750. 긴 변이 상한 초과 시 리사이즈. [MED] (roboflow, 과거 Anthropic 문서와 일치하는 공식)
- Gemini 계열(고정 타일): 두 변 모두 ≤384px 면 flat 258 토큰. 더 크면 768×768 타일로 나눠 타일당 258. 258 × ceil(w/768) × ceil(h/768). [MED] (roboflow)
해상도 처리 - 최신 VLM 은 dynamic resolution: 원해상도로 서브이미지 타일링(Qwen2-VL naive dynamic resolution, InternVL2 dynamic tiling up to 4K) → OCR·소객체에 유리. [MED] (검색 요약)
실무 함정 - 고해상도 이미지 1장 = 텍스트 2000~3000단어(2048~16384토큰) 상당. 4K 사진 1장이 5000+ 입력토큰 넘을 수 있음. [MED] (검색 요약) - ⚠ 버전 간 토크나이저 변경 함정: roboflow 는 "Opus 4.7 이 새 토크나이저로 같은 입력에 1.0~1.35배 토큰 생성(이미지 포함)" 이라 기술 → 같은 명목 단가라도 비용이 오를 수 있음. 모델명·수치 미확인, 개념(버전업 시 토큰 수 변동)만 참고. [MED] - OCR vs 비전 모델: 전용 dynamic-tiling VLM 이 native 해상도 유지해 OCR 정확도 유리하나 토큰 비용 급증 트레이드오프. [MED]
엇갈리거나 미확인
- 롱컨텍스트 vs RAG 의 정량 수치(정확히 몇 % 비용/지연 차이)는 소스마다 다르고 1차 확인 못 함. "RAG 가 대체로 싸고 빠르다" 정성 결론만 확실.
- RRF k=60 외 다른 기본값: 일부 구현은 다른 k 를 씀. Elasticsearch
rank_constant기본은 별도 확인 필요(문서 원문 직접 안 봄). - 오디오/비디오 토큰 과금: 검색에 명시 수치 부족. 비디오는 프레임 샘플링(초당 N프레임)으로 이미지 토큰처럼 과금된다는 통념뿐, 구체 수치 미확인.
- 멀티모달 벤더별 정확 단가: roboflow 페이지가 미래 모델명(GPT-5.5, Gemini 3.1 Pro)을 써서 단가는 신뢰 불가. 과금 메커니즘(공식) 은 established.
- Cohere/OpenAI/BGE MTEB 점수·Cohere v4 차원: 검색 요약만, 1차 확인 안 됨. 규격상 벤치 점수는 위키 인용 금지.
- Anthropic 이미지 (w*h)/750 공식의 현행 여부: 과거 Anthropic 문서 공식과 일치하나 2026-07 현행 1차 재확인은 못 함.
⛔ DO-NOT-CITE / 조작 의심
- WebSearch 결과에 미래 날짜 arxiv URL 다수 등장:
arxiv.org/pdf/2602.09570,2603.03301,2606.28352,2604.04937,2604.16909,2512.12694,2606.24937,2603.01761등. 2026-07 시점에 존재 불가능한 날짜(26년 하반기·미래) → 검색엔진이 생성/오염한 저신뢰 링크. 인용 금지, 열지 않음. - roboflow 페이지의 "GPT-5.5 / Gemini 3.1 Pro / Claude Opus 4.7 (2026-05)" 모델명·단가: 미확인 미래 표기. 과금 공식만 참고, 모델명·가격 인용 금지.
- youngju.dev / pecollective / futureagi / stackpulsar / vrlatech / tensorrigs 등 개인·마케팅 블로그: 단일 저신뢰 aggregator. 개념 방향 참고용, 수치 인용 시 반드시 [MED] + 1차 재확인 요망.
원문 발췌 (핵심)
- RRF: "score += 1.0 / ( k + rank( result(q), d ) )", "The paper recommends k = 60 ... Cormack-Clarke-Büttcher 2009 ... held up across nearly two decades." (blog.serghei.pl / elastic.co)
- 양자화: "All quantization methods kept perplexity within ~6% of baseline" / "Kernels matter more than algorithms—Marlin kernels provide massive speedups—2.6x for GPTQ and 10.9x for AWQ" (jarvislabs.ai)
- 유사도: "When vectors are normalized to unit length, dot product equals cosine similarity for ranking purposes ... OpenAI embeddings arrive pre-normalized, so Euclidean and cosine produce identical rankings." (blog.somecreativity.com)
- 환각: "Next-token objectives reward outputs that look like plausible human text rather than ones that accurately convey uncertainty ... hallucination rates dropped by roughly 90–96% without hurting quality" (lakera.ai)
- 멀티모달: "A 1024x1024 image can equal 2,048-16,384 tokens depending on model" / Claude "(width × height) / 750" / Gemini "Images ≤384px both dimensions: flat 258 tokens" (검색 요약, roboflow)
- 벡터DB: "Below 100K vectors: brute-force NumPy suffices ... Optimal recall target: 90–95%" (machinelearningmastery.com)