AI(11)
-
[PostgreSQL] Vector Search를 위한 인덱스 타입 비교 (HNSW vs IVFFlat)
서론안녕하세요! 요즘 AI 시대를 맞이하여 벡터 검색(Vector Search)이 정말 핫한데요. PostgreSQL에서도 pgvector 확장을 통해 벡터 검색을 지원하고 있습니다. 오늘은 벡터 검색에 사용되는 두 가지 주요 인덱스 타입인 HNSW와 IVFFlat에 대해 알아보겠습니다.무엇이 다를까?우선 두 인덱스의 주요 특징을 간단히 비교해볼까요?HNSW (Hierarchical Navigable Small World)그래프 기반 인덱스빠른 검색 속도더 많은 메모리 사용인덱스 생성이 더 오래 걸림IVFFlat (Inverted File Flat)클러스터 기반 인덱스적은 메모리 사용빠른 인덱스 생성HNSW보다는 조금 느린 검색 속도실제 사용 예제간단한 예제로 두 인덱스의 사용법을 살펴보겠습니다.-- p..
2024.11.14 -
[Langchain] Passthrough를 활용한 간단한 Chain 구성하기
서론안녕하세요! 오늘은 Langchain에서 Chain을 구성할 때 자주 사용되는 Passthrough에 대해서 알아보려고 합니다. 특히 LCEL(Langchain Expression Language)에서 많이 활용되는 기능인데요, 이름 그대로 데이터를 '통과'시키는 역할을 하지만 생각보다 활용도가 높답니다. 무엇이 좋을까?Passthrough는 다음과 같은 장점이 있습니다:Chain 구성을 단순화할 수 있습니다.입력 데이터를 그대로 전달하면서도 추가적인 처리가 가능합니다.다른 Chain들과 조합하기 쉽습니다.코드로 살펴보기간단한 예제 코드로 살펴보겠습니다.from langchain.chat_models import ChatOpenAIfrom langchain.schema.runnable import R..
2024.11.14 -
[Langchain] FastAPI에서 LLM Agent를 활용한 Response Streaming
서론저번에 한번 같은 글을 올렸었는데요 그것보다 훨씬 더 간편하고 성능적으로 개선된 방법을 설명해 볼까 합니다.기존글은 이거예요!https://todaycodeplus.tistory.com/70 [Langchain] Langserve에서 LLM Agent를 활용한 Response Streaming기존에 LCEL기반의 LLM pipeline에서 Agent를 활용하는 방식으로 전환을 하고 있었습니다. 그 이유는 아래와 같습니다.1. Retriever를 구조화하여 사용하기 힘들다.2. 복잡한 형태, 크로스 도매인을 가진todaycodeplus.tistory.com 무엇이 바뀌었을까?우선 기존에는 방식이 다음과 같았습니다. Agent가 결과물을 생성하는 과정에서 LLM모델의 Output에서 생성되는 Token을..
2024.10.31 -
[후기] 우아콘 이그나이트 세션 발표 참여
어떻게 신청하게 됐을까?최근에 LLM을 활용한 전기차 정보 제공 서비스를 만들고 있는데, 동료 PM으로부터 메시지를 받았습니다. 우아콘을 10월 30일 날 진행하니 신청해 보라는 것이었고, 내부 내용을 살펴보니 이번에는 참여형 세션이라고 해서 외부 인물도 발표를 할 수 있는 세션이 있다는 것을 알게 됐습니다. 그래서 고민 한.. 0.1 그람쯤 하고, 설마 되겠어라는 생각으로 작성한 참가 신청을 했습니다. 참여 확정 안내와.. 정말 돼버렸네, 저는 이 메일을 처음 받았을 때 약간 인지부조화가 와서, 멍~ 했었는데요.. 내가 어찌 됐든 콘퍼런스 참가자로 발표도 하고 뭔가.. 이상한 기분이 들었습니다. 자료 준비 과정어떤 발표를 할까 정말 고민이 많이 됐습니다. 발표 시간은 각자 5분 정도로 매우 짧았기 때문..
2024.10.31 -
[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