본문 바로가기

전체 글

로컬 RAG 에서 채팅 내용 유지하기 Langchain4j/Reids 상담 챗봇을 특정 메시지 수 만큼 영속성을 갖도록 하고 싶어 보니..Langchain4J에서는 기본적으로 지원이 되고 있었다.  https://docs.langchain4j.dev/tutorials/chat-memory/ Chat Memory | LangChain4jMaintaining and managing ChatMessages manually is cumbersome.docs.langchain4j.dev MessageWindowChatMemory 단순 N개 관리면 충분해 보여서 이걸로 정한 후, 사용될 Store 는 Redis 로 간략히 설정해 봤다. fun createCounselorChatMemory(sessionId: String, maxMessages: Int = 20): ChatMem.. 더보기
간단한 RAG 를 로컬 환경에서 구성해보자. 이번에 요금제 추천을 진행해보면서 간단한 로컬 RAG를 구성해 봤는데, 가벼운 즐거움을 느꼈달까..ㅎㅎ우선 재미가 있어서 향후에 좀 더 해보기로 했다.- Exaone / Ollama 로컬 API 를 이용한 Model 적용. (개인적으로는 익시젠을 사용하고 싶은데.. 오픈소스가 아니다)- Langchain4J의 History 에 Redis를 얹어서 채팅 유지하고 삭제하기. 이번 요금제 추천은 용량기준으로 만들어 봤는데, 기본적인 흐름은 아래와 같다.  1. 임베딩- 먼저 요금제 전체 데이터를 특정 포맷에 맞춰 TXT 파일로 생성해둔다.- TXT 파일을 읽어서 초기 한번 임베딩을 해둔다.   2. 사용량 확인.- 사용자가 웹에서 자신의 인터넷 사용 패턴을 자연스럽게 입력할 수 있도록 한다.- 물론 사용자의 .. 더보기
AI 라는 타이틀을 얹혀서(이렇게 해야...콜록) 챗봇과 요금제 추천을 진행 파일럿(토이플젝)으로 AI 챗봇과 요금제 추천을 진행해보고 있다. 여튼 기존에는 spring-ai, langchain4j 에 모델은 openai 또는 그냥 spring-ai + openai 로 진행하면서 RAG를 만들어 가고 있었는데, 역시 보안(회사 자체의...)을 생각하니 엑사온쪽이 좀 더 좋겠다는 생각이 들었다. (딥시크처럼 언어 문제도 없을테고!!!! - 한글로 답변을 요구했더니 한자가 섞여서 나와..oTL) 여튼 그런 결정과는 별개로 심심풀이 질/답이나 돌려볼까 해서 로컬에 32b 버전을 설치해서 돌려보니 생각보다 준수한 속도와 답변이 나왔다. 이정도면 파일럿이나 토이플젝에서 차고 넘치니까 그냥 이거로 초이스다! 늘 그렇듯 첫 질문은 내가 좋아하는 작가에 대해 짧은 답변을 요구해보았다. 딥시크(.. 더보기
이젠 간단한 유틸 같은 기능은 그냥 GPT를 사용해도 되지 싶다. (물론 트래픽과 사용량을 보고 판단해야지만 서도...ㅎㅎ 비쌈.비쌈 정말 비쌈...)  금지어 관리 기능과 적용, 안내에 대해 구현을 고민하는 친구가 있길래..  나 : "그런건 그냥 ChatGPT API나 우리 회사 AI API 써~ 반환 결과에 금지어, 문장의 의미, 부정/긍정평가등등 다 뽑아낼 수 있으니.. 단순 단어 체크 고민하는 시간에 AI 결과를 어떻게 보여 줄 것인가..를 고민하는게 더 좋지 않겠어?"라고, 자연스럽게 얘기하는 나를 보니.. 뭔가 스마트한 사람 같다. 는.. 개뿔. ㅎㅎㅎㅎ 나도 궁금해서 직접 GPT에게 물어보니 결과를 저리 좋게 내보내 준다. Spring AI 연동된 상태면 Response 멋지게 뽑아줄테니.. 로직과 코드 고민할 필요가 뭐가 있겠는가? 이미지는 네이버 아무.. 더보기
실 데이터 사용량과 요금제 정보로 GPT에게 추천을 받아 보았다. 실제 통신 사용량 데이터와 요금제를 이용해서 요금제 추천을 GPT에게 받아보았다.  오! 생각보다 잘 나오는데...문제는 정말 프롬프트와의 싸움 같은 느낌이다.이놈이 요청의 문장을 좀만 바꿔도 지맘대로 response를 던저준다... 아니 '79 요금제'는 있지도 않았어 이놈아!!! ㅎㅎ(즐거운 토이 플젝은 여기까지...;;) 더보기