LLM이 활용할 데이터, VectorDB, LLM 등을 연결하고 다양한 agent를 생성할 수 있어야 함. 질의 응답 (QA) agent, chat agent, multi-agent 등 다양한 agent들이 있으며, 현재는 Langchain (https://www.langchain.com/) 툴킷을 활용하여 만들 수 있음.
하지만 Langchain이 현재는 속도 최적화가 되어있지 않고, document가 상대적으로 부실하기 때문에 활용이 조금 어려움. Langchain을 기반으로 framework로 만든게 LlamaIndex (https://www.llamaindex.ai/). Llama를 만든 메타에서 만들었으며, 보다 쉽게 agent를 만들 수 있음.
LLM을 활용할 때 가장 많이 사용하는 방법은, 나의 데이터를 LLM이 참고하게끔 하는 RAG (Retrieval Augmented Generation)인데, 이를 위해서는 VectorDB가 필수적임. VectorDB는 일반 데이터베이스와는 달리 임베팅을 저장하는 DB. 유사도를 기반으로 현재 쿼리와 가장 가까운 데이터를 탐색하며, 뒷단에는 Annoy 알고리즘을 가장 많이 활용함. 대표적인 VectorDB는 Pinecone (https://www.pinecone.io/)이 있다. 만약 권한관리까지 필요하다면 Milvus (https://milvus.io/)가 좋은 선택.
VectorDB는 클라우드에 올릴지, 아니면 빠르게 로컬에 만들고 지울지 등에 따라 장단점이 있음. 여기 https://benchmark.vectorview.ai/vectordbs.html vectorDB들을 비교분석하였으니 참고. 가벼운 사용에는 pinecone, Chroma, Faiss 정도를 많이 사용함.
실제 production에 LLM 서비스를 제공하고자 할 때에는, 사용자의 특정 인풋을 거를 수 있어야 한다. 예를 들어 폭력적인 내용이나, 현재 LLM이 목표로 하는 서비스와 다른 쿼리인 경우, LLM이 결과를 generate하지 않도록 강제해야 한다. 폭력/정치 등의 주제에 대해서는 OpenAI가 활용하는 moderation api(https://platform.openai.com/docs/models/moderation)를 활용 할 수 있고, 특정 주제에 대해서는 아웃풋을 생성하고자 할 때엔 엔비디아에서 개발한 Nemo Guardrail (https://github.com/NVIDIA/NeMo-Guardrails)을 활용할 수 있다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2023년 11월 4일 오전 1:37