DL(7)
-
[LLM] OpenSearch - VectorStore로 써보기
안녕하세요 오늘은 Vector Store로 많이 쓰이는 OpenSearch를 가져와 봤습니다. Elastic Search를 Fork해서 사용하는만큼 Elastic Search와 유사한점도 그리고 다른점도 있습니다. 하지만 오늘은 이 차이점을 설명하는 자리는 아니라 이만 줄이고, 이제 Vector Store로서 장/단점을 그리고 간단할 설치와 Langchain에서 사용까지 알아볼까 합니다. 1. OpenSearch의 장점과 단점- 첫번째 장점 그건 바로 최근 아주 관심을 많이 받고 있는 RAG중에서도 Full Text Search (Lexical Search)를 Simillerity Search(Semantic Search)와 같이 쓸 수 있단 점 입니다. 성능이 좋은 다른 DB도 많지만. 기본적으로 이 ..
2024.09.04 -
[LLM] 프롬프트를 활용하며 느낀점 & 효과가 있던 방법 2편
지난번 소개드린 1편에 이어서 2편을 적어보려 합니다.https://todaycodeplus.tistory.com/72 [LLM] 프롬프트를 활용하며 느낀점 & 효과가 있던 방법 1편오늘은 프롬프트를 활용하며 느낀점을 한번 정리해보려고 합니다. 본격적으로 프롬프트를 활용해서 서비스를 개발하기 시작한것은 약 3개월 전 입니다. 그 당시 저는 프롬프트라곤 코드 작성todaycodeplus.tistory.com 1. 구조화된 출력 (Structured output)사실 지금은 크게 의미가 없을 수 있습니다. 왜냐하면 OpenAI에서 Structured Output을 지원하는 API를 제공하기 시작했기 때문이죠https://platform.openai.com/docs/guides/structured-output..
2024.08.28 -
[LLM] Langchain ReAct Agent에 DALL-E tool 추가하기
안녕하세요 오랜만에 또 글을 씁니다. 요즘 많은 분들이 Agent를 활용해서, AI Product를 만들고 계신데요, 그중에서 우리가 일반적으로 사용하는 gpt에도 들어있는 기능을 한번 구현해보고자 합니다. 우리가 GPT에 질문을 할 때 "테슬라 모델3에 황금색 필름 래핑한 모습인 사진 보여줘" 같은 질문을 하게 된다면. GPT는 DALL-E-3를 호출하여 이미지를 생성하고 쳇 화면에 표출해 주곤합니다.이런 이미지는 어떻게 쳇 화면에서 바로 인식하고 생성하는것일까요? 바로 ReAct Agent같은 반응형을 이용하면 가능합니다. Agent는 다양한 Tool을 등록하고 등록된 tools를 Agent LLM이 질문(요구사항)에 따라 어떤 도구를 사용할지 판단하는 과정을 거칩니다. 이 과정에서 이미지를 생성해야..
2024.08.02 -
[Langchain] Langserve에서 LLM Agent를 활용한 Response Streaming
기존에 LCEL기반의 LLM pipeline에서 Agent를 활용하는 방식으로 전환을 하고 있었습니다. 그 이유는 아래와 같습니다.1. Retriever를 구조화하여 사용하기 힘들다.2. 복잡한 형태, 크로스 도매인을 가진 질문에 대하여 답변하기 더 용이하다. 하지만 단점도 있습니다.1. 답변을 생성하기 위한 과정이 추가되다보니 답변이 느리다.2. LLM의 가끔의 멍청함으로 포맷을 정확히 지키지 못해, 추가 Token발생으로 비용이 쪼~금 더 나갈때가 있다. 그러나 이 단점중 2번째인 Formating 문제가 Claude 3.5 Sonnet이 출시되며 말끔하게 해결되어 Agent 전환을 하고 있는데...Agent의 답변은 여러 단계를 거쳐 마지막 Final Answer가 출력되는 시점에 일괄 출력되도록 ..
2024.06.26 -
[LLM] Data Splitters (with Langchain)
우리는 RAG를 구성하기 위해서 다향한 데이터를 Embedding하여 VectorDB에 저장해야 한다고 바로 이전글에서 알아보았는데요 그럼 어떻게 Embedding할 데이터를 만들까요? 일반적으로 html, Text, PDF, MS Document(Excel, ppt, docs)등 다양한 문서의 형태가 있는데 이것들을 Read -> Chunk로 분할 하여 Embedding에 사용되기 직전 까지의 과정을 한번 살펴볼겁니다. 너무 많은 Text Splitter가 있는데 그중에서 Character Splitter를 살펴보려고 합니다. 더 많은 Splitter에 대해서는 아래 링크를 참고하시기 바랍니다!https://python.langchain.com/v0.1/docs/modules/data_connectio..
2024.06.22 -
[LLM] RAG란 무엇인가?
안녕하세요 오랜만에 또 글을 써봅니다.최근 데이터엔지니어 이지만... 회사에서의 요구사항으로 LLM으로 서비스를 개발하고 있는데요, 특정 도매인의 최신 정보를 가지고 있는 Chatbot을 만들어야 하다보니 자연스럽게 RAG에 대해서 알게되었고 이 RAG에 대해서 제가 이해한 부분까지 정리해 보려 합니다. 각종 단어 Embedding이나, 프롬프트나 LLM과 같은 단어들에 대한 세부적 설명은 제외합니다.- RAG(Retrieval Argumented Generation)RAG(Retrieval Agumented Generation)는 검색-증강-생성 이라고 합니다. 무슨 의미를 가지고 있느냐.. 우리는 LLM모델을 먼저 이해할 필요가 있습니다. LLM모델은 Transformer라는 DL모델로 인간의 언어..
2024.06.20