🧠 LangChain + Chroma + t-SNE로 문서 임베딩 시각화하기문서를 벡터로 변환하고 시각화하여 RAG 검색의 기반을 시각적으로 이해해 보는 실습입니다.🔌 9. 벡터 임베딩 모델 설정이 코드는 각 문서 청크를 의미 기반 벡터로 변환해서 벡터 저장소에 넣기 위한 사전 준비 단계입니다.# 🧠 문서 청크들을 벡터 임베딩으로 변환하여 벡터 저장소(Vector Store)에 넣기 위한 준비embeddings = OpenAIEmbeddings()# 🔹 OpenAI의 임베딩 모델 사용 설정# - 각 텍스트 청크를 의미 기반 벡터로 변환# - 이 벡터는 RAG 검색에서 유사도 비교 기준으로 사용됨# - OpenAI API 키가 필요하며, 비용이 발생할 수 있음# 💡 참고: HuggingFace의 ..
🧠 LangChain + Chroma + t-SNE로 문서 임베딩 시각화하기문서를 벡터로 변환하고 시각화하여 RAG 검색의 기반을 시각적으로 이해해 보는 실습입니다.📦 1. 필수 라이브러리 임포트import os # 🧭 파일 경로 탐색 및 환경 변수 관리용 표준 라이브러리import glob # 📂 폴더 내 특정 패턴의 파일을 한 번에 가져올 때 사용 (예: *.txt)from dotenv import load_dotenv # 🔐 .env 파일에 저장된 환경변수(예: API 키) 불러오는 함수import gradio as gr # 🧑💻 Gradio 라이브러리 - 웹 UI를 손쉽게 만들 수 있음 (LLM 챗봇 인터페이스 구축 시 사용)?..
LLM에 넣기 좋은 문서를 만들기 위한 LangChain 문서 청크 분할 가이드 (chunk_size & overlap 이해하기)# ✂️ 문서를 LLM 입력에 맞게 청크(chunk) 단위로 분할하는 단계# - 긴 문서는 한 번에 LLM에 넣기 어렵기 때문에, 적절한 길이로 잘라야 함# - LangChain의 CharacterTextSplitter를 사용해 '문자 기준'으로 분할함text_splitter = CharacterTextSplitter( chunk_size=1000, # 📏 한 청크당 최대 1,000자까지 포함 chunk_overlap=200 # 🔁 청크 간에 200자씩 겹치도록 설정 (문맥 끊김 방지용))# 🧩 실제 분할 실행: documents 리스트 ..
💼 전문가 지식 기반 응답 에이전트회사 내부 구성원들이 사용할 수 있는전문적인 지식 기반 질문응답(Q&A) 에이전트를 구축합니다.이 에이전트는 높은 정확도를 유지해야 하며, 구현 비용은 낮게 유지하는 것이 중요합니다. 이 프로젝트에서는 질문에 대한 높은 정확도를 보장하기 위해RAG (Retrieval Augmented Generation) 방식을 활용합니다.Gradio 챗봇 만들기 전에 알아야 할 파이썬 필수 라이브러리 정리 (os, glob, dotenv, gradio)# 📦 필수 라이브러리 임포트 (환경 설정 + UI 구성 등)import os # 🧭 파일 경로 및 환경 변수 관리를 위한 표준 라이브러리import glob # 📂 폴더 내 특정 패..
🤖 LangChain으로 시작하는 RAG 파이프라인 구축 여정이 글은 RAG(Retrieval-Augmented Generation) 개념을 바탕으로, LangChain을 활용해 실제 지식 검색 + 응답 파이프라인을 구축하는 흐름을 정리한 내용입니다.🔁 RAG 복습RAG란?사용자의 질문과 의미적으로 유사한 정보를 벡터 기반 검색을 통해 찾아내고,해당 정보를 프롬프트에 포함해 LLM이 더 정확한 응답을 생성하는 방식입니다.핵심 구성요소질문 → 벡터화벡터 DB에서 관련 문서 검색검색된 문서 + 질문 → LLM 입력LLM이 응답 생성🧱 오늘의 핵심: LangChain으로 RAG 구현하기🧩 LangChain이란?LangChain은 다양한 LLM 기능(문서 검색, 질의응답, 요약, 생성 등)을블록처럼 연결..
🤖 벡터와 RAG 완전 이해하기 – LLM이 똑똑해지는 원리이 글은 RAG(Retrieval-Augmented Generation) 와 벡터 임베딩 개념, 그리고 그것이 LLM과 어떻게 연결되는지를 시각적으로 정리한 내용입니다.🔹 1. LM vs. LLM: 뭐가 다른 걸까?구분LM (Language Model)LLM (Large Language Model)의미언어 모델매우 크고 복잡한 언어 모델예시BERT, GPT-2 등GPT-4, Claude, Gemini 등기능문장 생성, 다음 단어 예측문맥 이해, 질의응답, 요약, 생성 등특징상대적으로 작음수십억~수천억 파라미터🧠 요약: LLM은 크기와 기능 면에서 LM을 확장한 고성능 버전입니다.🔹 2. 벡터 임베딩이란?텍스트를 수치화된 의미의 점(Vect..
💼 전문가 수준의 지식 기반 질문응답 챗봇 만들기이번 글에서는 전자상거래 회사 Shopwise를 위한지식 기반 질문-응답(Q&A) 에이전트를 만드는 과정을 정리합니다.정확도와 신뢰성이 중요한 영역이기 때문에,RAG(Retrieval Augmented Generation) 방식을 활용하며,이를 통해 단순 LLM보다 훨씬 정확한 답변을 기대할 수 있습니다.📂 1. 프로젝트 준비 - 코드 및 환경 설정# 📁 운영체제 관련 기능을 다루는 기본 모듈# - 환경 변수 설정, 파일 경로 조작 등에 사용됨import os# 📂 특정 경로에서 파일을 패턴(예: *.txt)으로 한꺼번에 가져올 때 사용# - 예: 문서 디렉토리에서 모든 PDF 파일을 한 번에 불러오기import glob# 🔐 .env 파일에 저장..
문제점 리덕스를 적용한 간단한 리액트 프로젝트를 만들기 위해서 리덕스를 위한 코드를 준비하고 yarn start를 했지만 화면에 아무것도 나타나지 않았습니다. 이후 콘솔창을 열어보니 이런 에러가 떠있었습니다. 원인 import React from "react"; import ReactDOM from "react-dom/client"; import "./index.css"; import App from "./App"; import { createStore } from "redux"; import rootReducers from "./modules"; import { Provider } from "react-redux"; const store = createStore(rootReducers); ReactDO..
PeerJS PeerJS는 WebRTC를 사용하여 P2P(peer-to-peer) 통신을 쉽게 구현할 수 있도록 도와주는 JavaScript라이브러리입니다. PeerJS를 사용하면 브라우저에서 WebRTC를 사용하여 다른 브라우저와 직접 통신할 수 있습니다. 이를 통해 브라우저 간에 파일 전송, 비디오 및 오디오 스트리밍 등의 실시간 통신이 가능합니다. PeerJS는 WebRTC의 복잡한 구현 세부 사항을 추상화하여 개발자가 더 쉽게 P2P 통신을 구현할 수 있도록 도와줍니다. PeerJS는 서버를 통해 브라우저 간 통신을 중계합니다. 이를 통해 브라우저가 직접 연결을 설정하고 NAT 트래버셜을 처리하는 것과 달리, 서버를 통해 중계함으로써 편리하게 통신할 수 있습니다. 또한 PeerJS는 간단한 API..