LangChain 8

Streamlit과 Langchain을 활용한 실시간 온프레미스 투자 어시스턴트 구현하기 [19]

“투자 어시스턴트” 웹 애플리케이션을 Streamlit과 Hugging Face Transformers, Langchain 등의 라이브러리를 사용해 구축하는 과정을 보여줍니다. 실시간 질의에 대해 온프레미스(로컬) 환경에서 답변을 생성할 수 있도록 합니다.import streamlit as stimport transformersimport torch# Langchain 및 커뮤니티 모듈(베타)에서 BM25, FAISS, SentenceTransformer를 불러옵니다.from langchain_community.retrievers import BM25Retrieverfrom langchain_community.embeddings.sentence_transformer import SentenceTransf..

문서 검색 성능 평가: BM25와 FAISS를 활용한 Hybrid Search 분석 [12]

문서 검색 시스템에서 성능 평가(Evaluation)는 매우 중요한 작업입니다. 오늘은 BM25와 FAISS 알고리즘을 결합한 Hybrid Search를 구현하고, 이를 평가하는 과정을 소개합니다. 이 글에서는 Python 코드 예제와 함께 정확도(Precision), 재현율(Recall), F1 점수를 계산하여 검색 성능을 분석하는 방법을 다룹니다.문서 검색 시스템 구성우리는 두 가지 검색 알고리즘을 결합한 Hybrid Search를 사용합니다.BM25: 단어 기반 검색 알고리즘으로, 검색어와 문서의 단어 겹침 정도를 바탕으로 검색.FAISS: OpenAI API의 Embedding을 활용하여 의미 기반 검색을 수행.from langchain_community.retrievers import BM25R..

LangChain으로 BM25와 FAISS를 활용한 Ensemble Retriever 실습 [11]

이번 실습에서는 BM25와 FAISS를 결합한 Hybrid Search(Ensemble Retriever)를 구현하고, 검색 결과를 테스트해 보겠습니다. 이 방법은 두 검색 알고리즘의 장점을 조합하여 더 나은 검색 결과를 제공할 수 있습니다.Hybrid Search란?Hybrid Search는 다양한 검색 알고리즘의 결과를 조합하여 최종 검색 결과를 도출하는 방법입니다.이번 실습에서는 BM25와 FAISS를 활용하며, 두 검색기의 결과를 가중치(Weights) 기반으로 결합하는 Ensemble Retriever를 구현합니다.BM25: 단어 기반 검색 알고리즘으로, 검색어와 문서 간 단어 겹침 정도를 기준으로 유사도를 측정합니다.FAISS: OpenAI API Embedding을 활용하여 벡터화된 문서를 ..

LangChain으로 BM25와 FAISS를 활용한 검색 알고리즘 비교 실습 [10]

단어 기반 검색 알고리즘(BM25)과 OpenAI API Embedding(FAISS)를 활용하여 동일한 데이터에 대해 검색 성능과 특징을 비교해 보았습니다.실습에 사용한 알고리즘BM25: 단어 기반 검색 알고리즘으로, 텍스트 데이터의 단어 빈도와 검색어와의 겹치는 정도를 바탕으로 유사도를 측정합니다.FAISS: OpenAI API의 임베딩을 활용하여 문서를 벡터화하고, 의미적으로 유사한 문서를 검색합니다.BM25와 FAISS 검색기를 설정하고 동일한 문서 리스트를 각각의 알고리즘에 입력하였습니다.BM25Retriever: 단어 빈도를 기반으로 검색FAISS: OpenAI API 임베딩을 활용하여 문서를 벡터화from langchain_community.retrievers import BM25Retrie..

LangChain으로 PDF 기반 검색기 구현하기: OpenAI Embeddings와 FAISS 활용 [9]

이 글에서는 LangChain과 OpenAI Embeddings, 그리고 FAISS를 활용하여 PDF 문서를 기반으로 질문-응답 검색기를 구현하는 방법을 소개합니다.이전에 진행했던 PDF 문서 파싱 및 청크 단위 분리 작업을 확장하여, 문서를 임베딩으로 변환한 후 검색 기능을 구현합니다.주요 구현 과정PDF 문서 파싱텍스트를 청크 단위로 분리임베딩 변환 및 벡터 저장질문을 벡터로 변환하여 유사도 기반 검색 수행PDF 검색기 구현 코드아래는 검색기를 구현하기 위한 Python 코드입니다:from langchain_community.document_loaders import PyPDFLoaderfrom langchain.text_splitter import CharacterTextSplitterfrom la..

LangChain으로 문서를 쪼개는 방법: Splitter 실습 가이드 [8]

Python과 LangChain 라이브러리를 활용하여 문서를 원하는 단위로 분리(Splitting)하는 방법을 소개합니다. 이 글에서는 문자 단위로 문서를 쪼개는 실습을 진행합니다.1. 문서 쪼개는 방식문서를 나누는 방식에는 여러 가지가 있습니다. 예를 들어:문단 단위: 문단마다 분리문장 단위: 문장마다 분리의미 단위: 의미가 이어지는 구간마다 분리이 글에서는 문자 단위로 분리하여 특정 크기로 청크(chunk)를 만드는 실습을 진행합니다.2. 실습 코드다음은 LangChain의 CharacterTextSplitter를 활용하여 문서를 문자 단위로 쪼개는 코드입니다:from langchain_community.document_loaders import PyPDFLoaderfrom langchain.text..

LangChain의 PyPDF로 PDF 텍스트 추출하기: 간단한 실습 가이드 [7]

Python에서 LangChain과 PyPDF 라이브러리를 활용하여 PDF 문서의 텍스트를 추출하는 방법을 소개합니다. 특히, PDF 파일의 첫 페이지에서 텍스트를 추출하는 간단한 실습을 진행하겠습니다.Python 환경임의의 PDF 파일 (예: test.pdf)1. 필요한 라이브러리 설치먼저, PDF 텍스트 추출에 필요한 라이브러리를 설치합니다. 아래 명령어를 실행하세요pip install langchainpip install langchain-communitypip install pypdf2. PDF 텍스트 추출 코드 작성다음은 LangChain의 PyPDFLoader를 사용해 PDF 파일의 첫 페이지에서 텍스트를 추출하는 코드입니다from langchain_community.document_loade..

LangChain 프레임워크 [5]

LangChain은 대규모 언어 모델(LLM)을 활용한 애플리케이션을 개발할 수 있도록 돕는 오픈소스 프레임워크입니다. 이 프레임워크는 언어 모델의 강력한 능력을 효율적으로 통합하고, 특정 작업에 맞는 복잡한 애플리케이션을 구축하기 위해 설계되었습니다.LangChain의 주요 기능과 구성 요소:프롬프트 엔지니어링(Prompt Engineering)LangChain은 사용자가 언어 모델과의 상호작용을 제어할 수 있도록 프롬프트 템플릿을 제공합니다. 이를 통해 사용자는 효율적이고 일관된 결과를 생성할 수 있습니다.체인(Chains)여러 작업을 연계하여 실행할 수 있는 체인을 지원합니다. 예를 들어, 정보 검색 → 데이터 처리 → 답변 생성의 단계를 하나의 체인으로 구성할 수 있습니다.에이전트(Agents)L..