iNote

생각을 기록하면 오래 남습니다.

AI 어시스턴트

게스트님, 안녕하세요

무엇을 도와드릴까요?

  • 대화 기록이 없어요.

AI 어시스턴트

게스트님, 안녕하세요

무엇을 도와드릴까요?

  • 대화 기록이 없어요.
iNote
iNote
홈할 일일지독서나의 글글쓰기dev-guide

iNote

생각을 기록하면 오래 남습니다.

학습AI

하네스 AI 구축 준비

서동찬 (sdc337dc@gmail.com)

생성일 : 2026.10.02 21:22 / 수정일 : 2026.10.02 21:26

  • 하네스 AI는 이미 만들어진 LLM(Claude, GPT 등)을 그대로 두고, 프롬프트·컨텍스트·툴 호출·에이전트 루프와 같은 주변 설계만 담당하며, RAG, pgvector, 임베딩 같은 지식 공급 컴포넌트는 모델을 건드리지 않고 “컨텍스트 엔지니어링” 영역에 속한다.
  • KURE‑v1은 고려대 연구실에서 공개한 BGE‑M3 기반 임베딩 모델로, 문서 청킹·벡터화·pgvector 저장·유사도 검색·LLM 프롬프트 삽입으로 구성되는 RAG 흐름을 바로 활용한다.
  • 문서와 질의 임베딩은 반드시 동일 모델(KURE‑v1)로 수행해야 하며, pgvector 컬럼은 vector(1024) 로 맞추고, 코사인 거리와 HNSW 인덱스를 활용하면 검색 효율을 높일 수 있다.
  • KURE‑v1은 오픈 모델이므로 Python(sentence‑transformers 등)에서 직접 실행하거나 별도 Python 서비스를 두고 FE/Node 스택과 연결해 사용한다.

pgvector - 쿠레 - RAG - 임베딩

구분 기준은 모델의 가중치(weights)를 바꾸느냐예요.

모델 생성/학습은 사전학습(pretraining)이나 파인튜닝(LoRA 등)처럼 데이터를 넣어 모델 내부 파라미터를 바꾸는 작업이에요. GPU, 학습 데이터셋, 학습 파이프라인이 필요하고, 결과물은 새로운 모델 파일이에요.

하네스는 이미 만들어진 모델(Claude, GPT, 오픈소스 LLM 등)을 그대로 두고 그 주변을 설계하는 작업이에요. 무엇을 입력으로 넣을지(프롬프트, 컨텍스트), 어떤 도구를 쓰게 할지, 결과를 어떻게 검증하고 반복할지(에이전트 루프), 기억을 어떻게 관리할지 같은 것들이요.

말씀하신 구성을 보면:

  • 임베딩: 문서를 벡터로 바꾸는 단계예요. 기존 임베딩 모델을 사용하는 것이지 학습하는 게 아니에요.

  • pgvector: 그 벡터를 저장하고 유사도 검색하는 DB예요.

  • RAG: 질문이 들어오면 관련 문서를 검색해서 LLM 프롬프트에 끼워 넣는 방식이에요.

세 가지 모두 모델은 건드리지 않고, 모델에게 어떤 지식을 언제 넣어줄지 설계하는 거라 하네스 영역, 좀 더 정확히는 그 안의 "컨텍스트 엔지니어링" 파트에 해당해요. 엄밀하게 "하네스"를 에이전트 실행 프레임(루프, 툴 호출, 상태 관리)으로 좁게 쓰는 경우도 있는데, 그때도 RAG는 하네스에 꽂히는 지식 공급 컴포넌트로 봐요.

예외는 하나 있어요. 도메인 검색 품질을 올리려고 임베딩 모델 자체를 파인튜닝한다면 그 부분만은 모델 학습 작업이 돼요. 일반적인 RAG 구축에서는 거의 안 하고요.

참고로 "쿠레"가 정확히 어떤 걸 말씀하신 건지 잘 모르겠는데(쿼리? 큐레이션? 특정 라이브러리?), 알려주시면 그 단계가 어디에 해당하는지도 짚어드릴게요.


KURE-v1은 고려대 연구실에서 이미 학습을 끝내서 공개한 임베딩 모델이에요. 제가 아는 바로는 BGE-M3를 한국어 검색 데이터로 파인튜닝한 모델이라, 모델을 만드는 작업은 연구실이 이미 해둔 거예요. 동찬님은 그걸 가져다가 사용하는 쪽이라 여전히 하네스(애플리케이션) 작업이 맞아요.

전체 흐름으로 보면 이렇게 돼요.

  1. 문서 준비: 문서를 적당한 크기로 자르기(청킹)

  2. KURE-v1으로 각 청크를 벡터로 변환

  3. pgvector에 벡터 + 원문 저장

  4. 질문이 오면 질문도 KURE-v1으로 벡터화 → pgvector에서 유사한 청크 검색

  5. 검색된 청크를 프롬프트에 넣어 LLM(Claude, GPT 등)에 전달 → 답변 생성

여기서 모델은 두 종류가 쓰이는데 둘 다 "가져다 쓰는" 거예요. 검색용 모델은 KURE-v1이고, 답변 생성용 모델은 LLM이에요. 동찬님이 직접 설계하는 건 청킹 전략, 검색 개수, 프롬프트 구성, 결과 필터링 같은 연결부라서 이게 하네스 영역이에요.

실무 팁 몇 가지 드리면:

  • KURE-v1 출력 벡터는 BGE-M3 기반이라 1024차원일 거예요. pgvector 컬럼을 vector(1024)로 맞추고, 실제 출력 차원은 한 번 확인해 보세요.

  • 문서 임베딩과 질문 임베딩은 반드시 같은 모델로 해야 해요. 나중에 모델을 바꾸면 기존 벡터를 전부 다시 만들어야 해요.

  • 유사도는 보통 코사인 거리(<=> 연산자)를 쓰고, 데이터가 많아지면 HNSW 인덱스를 거는 게 좋아요.

  • KURE-v1은 API가 아니라 오픈 모델이라 Python(sentence-transformers 등)으로 직접 돌리거나 서버로 띄워야 해요. FE/Node 쪽 스택이면 임베딩만 담당하는 작은 Python 서비스를 하나 두는 구성이 흔해요.