DL(13)
-
[LLM] Semantic Search를 위한 Langchain Custom Retriever 구현하기
안녕하세요 오늘은 Langchain에서 Custom Retriever를 구현하는 방법을 소개해볼까 합니다. 가끔 이런 경우가 생깁니다.1. 아 뭔가 Retriever에서 데이터가 출력되기 전에 ReRank를 사용하고 나온다면 어떨가?2. 어? 뭐야 이건 Retriever가 없네? Langchain_community 라이브러리를 뒤져봐도 내가 원하는 Retriever가 없는경우 (제가 못찾았을 수 있습니다.. 머쓱..)3. 데이터가 Retriever에서 필터를 가지거나, Similarity Search가 되기전 뭔가 처리를 했으면 좋겠다거나.. 이런 이유로 기존에 Langchain에서 제공되던 Retriever를 수정하여 사용 할 수 있습니다. 1. Base Retriever에서 중요한 매서드들[API ..
2024.09.05 -
[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] 프롬프트를 활용하며 느낀점 & 효과가 있던 방법 1편
오늘은 프롬프트를 활용하며 느낀점을 한번 정리해보려고 합니다. 본격적으로 프롬프트를 활용해서 서비스를 개발하기 시작한것은 약 3개월 전 입니다. 그 당시 저는 프롬프트라곤 코드 작성하며 생긴 문제를 해결하기위해서, GPT또는 Claude에 코드를 입력하고, 문제를 찾아줘 같은 짧은 프롬프트를 입력하고 있었죠.. 그런데 이제 서비스를 개발하기 시작하면서 여러 단계의 LLM전처리 과정과, Agent를 활용하기 위한 방법들을 고민하게 됐습니다. 그 과정에서 얻은 프롬프트 노하우?? 꿀팁?? 어쩌면 모두가 아는 방법일지 모릅니다만... 공유해보도록 하겠습니다. 1. Claude와 OpenAI GPT의 차이점먼저 저는 여러 모델을 사용하고 있습니다. 대표적인 두 거목이 바로 OpenAI의 GPT와 Anthropi..
2024.08.17 -
[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