LLM 8

Opensearch의 PreProcessing ? - Opensearch Analyzer

Analyzer라는 이름만 들으면 numeric data와 자연스럽게 연결되는 나의 편견 때문에 아직도 왜 검색엔진의 Analyzer인지 명확하게 와닿지는 않지만 ( 아마 '분석' 후 가공 정도의 의미일 것으로 추측한다. ) , Opensearch에서의 Analyzer는 Tokenizer와 불용어 등의 filter 를 하는 즉 python 내 nltk ( Natural Language Tookit ) 과 비슷한 Pre-Processing 역할을 해준다. 정확히는 Character Filter -> Tokenizer -> Token Filters의 일련의 과정들을 한 번에 처리해주는 Piple-line역할을 한다. **Charactor Filter : 토크나이징 전에 텍스트를 전처리 (예: HTML 태그..

LLM

OpenSearch - Hybrid Search에 대해서

https://aiden0729.tistory.com/27 OpenSearch 란 ? - AWS의 ElasticSearch, 신흥 Vector 검색의 강자가 될 것인가Elasticsearch와 Kibana의 대시보드는 오픈소스 라이선스였지만, AWS가 해당 오픈소스를 상업화하면서 Elastic은 2021년 License를 기반으로 상업적 제약을 걸었고, 이 때문에 AWS는 Elasticsearch를 fork한 서비aiden0729.tistory.com 위의 포스팅으로 OpenSearch의 개념과 기초적인 지식을 적었는데, 그 중 중요한 기능 중 하나인 Hybrid Search에 대해 조금 더 알아보고자 한다. 1. Sorting 해당 Sorting을 포함해서 아래 설명할 추가적인 기능들은 LLM 검..

LLM

OpenSearch 란 ? - AWS의 ElasticSearch, 신흥 Vector 검색의 강자가 될 것인가

Elasticsearch와 Kibana의 대시보드는 오픈소스 라이선스였지만, AWS가 해당 오픈소스를 상업화하면서 Elastic은 2021년 License를 기반으로 상업적 제약을 걸었고, 이 때문에 AWS는 Elasticsearch를 fork한 서비스를 만들었는데 해당 서비스가 Opensearch 이다. Opensearch는 Elasticsearch의 역색인 구조를 그대로 이식하였으며, ML이나 보안 분야에서도 추가적인 서비스를 제공한다고 밝혔으며, 이러한 방식은 Apache Lucene의 역색인을 wrap-up 및 구조화 할 수 있었기 때문에 가능한 것으로 생각된다.Lucene은 2024년 10월 10.0 이상의 버전을 발표하기 시작하였는데 해당 버전에서는 SIMD ( Single Instructi..

LLM

bm25란 ? - TF IDF의 진화형

TF-IDF란 ? TF-IDF ( Term Frequency-Inverse Document Frequency )LLM의 등장으로 텍스트 관련 클래시컬한 알고리즘은 많이 쓰이지 않는 추세이지만 여전히 Data Science 나 대용량의 text 데이터를 처리 할 때, 혹은 검색 엔진과 추천시스템 등에도 해당 TF-IDF는 여전aiden0729.tistory.com 위의 글에서 TF-IDF에 대해서 언급한 적이 있는데, 이번에 말해볼 bm25는 TF-IDF의 진화 형태정도 되는 격이라고 할 수 있겠다. 재밌는건 bm25는 Best Matching 25 의 줄임말인데, 25는 해당 알고리즘을 개발하던 Okapi 그룹에서 25번 째 테스트에서 가장 좋은 결과가 나와서 이름이 붙었다고 한다. IT랑 다소 거리가..

LLM

aNN(Approximate Nearest Neighbor)

kNN이란 ? kNN이란 ? ( k-Nearest Neighbors )kNN은 Classical한 ML에서도 자주 사용되지만, LLM분야에서는 RAG에서 언급되는 VectorSearch의 시작같은 개념이다. kNN 개념은 최근접 이웃이라는 이름과 같이 직관적이다. 가장 가까운 k개의 벡터를 찾는aiden0729.tistory.com 위의 글에서 kNN에 대한 내용을 다뤘었다. 이번에는 kNN과 비슷하지만 '완벽'한 이웃보다는 '훌륭한' 이웃정도를 찾는 aNN에 대한 내용을 다룰까한다. 하지만 많은 VectorDB 및 Search에 관련된 서비스들이 검색 내용이 너무 방대해지면서 속도가 느려지기 시작하였다.따라서 Faiss, Annoy, Elasticsearch 등을 기반으로 aNN 의 개념으로 속도..

LLM

kNN이란 ? ( k-Nearest Neighbors )

kNN은 Classical한 ML에서도 자주 사용되지만, LLM분야에서는 RAG에서 언급되는 VectorSearch의 시작같은 개념이다. kNN 개념은 최근접 이웃이라는 이름과 같이 직관적이다. 가장 가까운 k개의 벡터를 찾는 것이다. BaselineRAG에서는 이를 chunk로 Embedding 하였기 때문에 해당 chunk를 찾아온다. 일반적으로 유클라디안거리 혹은 코사인 유사도로 해당 '가까움'에 대한 정의를 얻는다. 그러면 많은 k를 찾게 하면 좋겠지만 너무 많은 k를 찾게하면 RAG 프롬프트에 주입되는 내용에 노이즈가 많이 생기기 때문에 현재 내용과 차원에 맞는 적절한 k를 실험적으로 설정하는 것이 좋다. 프로덕트로 진행시 비용이 다소 비싼 외부 API의 모델이라면 비용 또한 무시할 수 없다...

LLM

LlmaIndex vs Langchain 01 - 라마인덱스

라마인덱스와 랭체인은 2023년 LLM hype이 일어났을 때부터 많이 쓰였던 프레임워크다. OpenAI API 등을 function으로 엮어 한땀한땀 짜도 되지만, 사실 해당 wrap-up한 프레임워크를 사용하는 것이 편리하긴 하다. 다만 API 스펙이 바뀌거나 버전 변동 등에는 유연하게 바로 대처하기는 어렵고, 둘 다 의존성도 상당히 많아서 가상환경에서 정확히 버전관리를 하면서 조심스럽게 코드 수정을 해야한다. 그럼에도 의존성 있는 라이브러리의 스펙 변동으로 에러가 나는 경우가 종종 있다. 아래와 같이 사실 둘의 목적성이나 구조는 많이 다르다. 항목 LlamaIndex LangChain 주요 목적외부 데이터 연결과 인덱싱, 문서 기반 질의 응답 최적화멀티 모듈 체이닝, LLM 기능 조합으로 에..

LLM

RAG ( Retrieval-Augmented Generation ) 미래는 ? - 과연 돈이 될 것인가

RAG는 어떤 팀은 '랙'으로, 어떤 회사는 '알에이지'라고 말하기도 한다. 그리고 출시된지 어언 2년정도 흘렀는데 여전히 둘의 단어는 통합이 안되었고, 명칭의 혼란만큼 RAG 자체의 한계도 다소 여전하다. LLM이 큰 반향을 일으킨 2023년 2월경, 많은 기업은 일단 tuning이라는 단어가 custom에 가깝다고 생각했는지 fine-tuning을 찾아헤메기 시작했다. 물론 fine-tuning은 좋은 방향이다. 돈이랑 데이터가 많다면 말이다. 특히 fine-tuning은 거대 모델을 local에 얹는 것도 부담스러웠지만, 이미 tuning 된 데이터를 바꾸는 일은 생각보다 더 어려운 일이였다. 데이터라는 것은 다소 변하고 수정되기 마련인데 fine-tuning은 그런 작업을 자주하기에는 다소 부담..

LLM