📑
LLM
일반적인 LLM의 문제점
- 할루시네이션: 실제로 존재하지 않는 정보를 지어냄. 요즘은 프롬프트 처리(ex. 모르면 대답하지 않기 등)가 잘 되어있어서 덜하다.
- 학습된 지식이 아니면 답변이 어려움.
정확한 답변을 얻으려면 맥락을 제공해야 함.
RAG
Retrival-Augmented Generation. 검색증강생성.
답이 있을만한 문서를 검색해서 정보가 들어있는 문서들을 잘게 쪼개서 임베드.
그리고 그 임베딩들을 DB에 저장.
질문과 연관되어 보이는 것을 잘게 쪼갠 것들 중에서 골라 가져오고(Retrieve) 그것들이 맥락이 됨.
그것들을 프롬프트에 추가하고, LLM이 그것을 읽고 답변을 준다.
컴퓨터가 비슷한 문서를 찾는 방법
컴퓨터에서 유사도를 비교할 때 (두 점 사이의 거리를 계산하는 것과 같은) 수학적 방법을 사용함.
몇차원이던 어떤 공간의 좌표로 표현되는 점들 사이에는 수학적으로 거리를 계산할 수 있는 공식이 있다.
임베딩
텍스트, 이미지 등의 데이터를 벡터뭉치로 변환한 결과값. 좌표값.
일종의 다차원 좌표여서 서로의 거리를 구할 수 있다.
이 좌표들을 효과적으로 저장해두는 벡터데이터베이스(보통 NoSQL)가 있다.
텍스트를 숫자로 바꿔주는 AI = 임베딩 모델
⇢ 텍스트를 text-embedding-3-small이라는 AI 모델에 넣으면 1,536차원의 임베딩으로 바꿔준다.
anythingLLM
AnythingLLM Developer API Documentation
anythingLLM 사용 시 openai를 제공자로 사용하면 openai로 데이터가 넘어가기 때문에 이를 막기 위해 로컬데이터를 사용하려면 lmstudio로 설정해야한다.