<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>DONGHAK.LOG</title><description>금융 시스템과 백엔드 운영, AI 프로젝트에서 마주친 문제와 기술적 판단을 기록합니다.</description><link>https://example.com/</link><item><title>Chroma에 문서를 넣으면 AI가 바로 답할 수 있을까?</title><link>https://example.com/blog/langchain-chroma-rag-documents/</link><guid isPermaLink="true">https://example.com/blog/langchain-chroma-rag-documents/</guid><description>LangChain과 Chroma로 문서를 나누고 Embedding해 저장한 뒤, 관련 조각을 검색해 LLM 답변으로 연결하는 RAG 흐름을 쉽게 설명합니다.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate></item><item><title>Chroma에서 Pinecone으로 바꾸면 무엇이 달라질까?</title><link>https://example.com/blog/langchain-chroma-to-pinecone/</link><guid isPermaLink="true">https://example.com/blog/langchain-chroma-to-pinecone/</guid><description>LangChain RAG의 Vector Store를 Chroma에서 Pinecone으로 바꿀 때 달라지는 실행 위치, 인증, Index 설계, 데이터 이전과 운영 책임을 쉽게 설명합니다.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>LangSmith로 평가하고 AI Agent로 확장하기</title><link>https://example.com/blog/langchain-evaluation-agent-next-steps/</link><guid isPermaLink="true">https://example.com/blog/langchain-evaluation-agent-next-steps/</guid><description>LangChain RAG 챗봇의 검색과 답변을 LangSmith Dataset·Evaluator·Experiment로 비교하고, Tool을 사용하는 AI Agent로 확장할 때의 안전 경계를 설명합니다.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Few-shot으로 답변 형식 개선하고 배포하기</title><link>https://example.com/blog/langchain-few-shot-deployment/</link><guid isPermaLink="true">https://example.com/blog/langchain-few-shot-deployment/</guid><description>LangChain Prompt에 Few-shot 예시를 넣어 답변 형식을 일관되게 만드는 방법과 Structured Output의 한계, Streamlit 배포 전 보안 점검을 설명합니다.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate></item><item><title>AI 모델 API는 무엇을 기준으로 골라야 할까?</title><link>https://example.com/blog/langchain-model-provider-selection/</link><guid isPermaLink="true">https://example.com/blog/langchain-model-provider-selection/</guid><description>LangChain에서 OpenAI·Upstage·Ollama를 연결할 때 데이터 경계, 비용, 네트워크와 운영 책임을 어떻게 비교해야 하는지 쉽게 설명합니다.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>LangChain으로 RAG 챗봇을 만들면 무엇이 연결될까?</title><link>https://example.com/blog/langchain-rag-chatbot-architecture/</link><guid isPermaLink="true">https://example.com/blog/langchain-rag-chatbot-architecture/</guid><description>LangChain RAG 챗봇이 문서를 읽고 나누고 검색해 LLM 답변으로 연결하는 전체 구조와 첫 ChatOpenAI 호출을 쉽게 설명합니다.</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>문서 전처리와 키워드로 검색 품질 높이기</title><link>https://example.com/blog/langchain-rag-retrieval-quality/</link><guid isPermaLink="true">https://example.com/blog/langchain-rag-retrieval-quality/</guid><description>LangChain RAG에서 문서 정리, Chunking, metadata와 키워드 사전을 이용해 질문 표현이 달라도 필요한 문서를 찾는 검색 품질 개선 방법을 설명합니다.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>LangChain 없이 RAG를 만들면 무엇이 불편할까?</title><link>https://example.com/blog/langchain-rag-without-framework/</link><guid isPermaLink="true">https://example.com/blog/langchain-rag-without-framework/</guid><description>RAG를 직접 연결할 때 생기는 반복 코드와 LangChain의 Loader·Splitter·Retriever·Runnable 추상화가 줄여주는 일, 그 대가를 쉽게 설명합니다.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate></item><item><title>Streamlit으로 대화·기억·Streaming 구현하기</title><link>https://example.com/blog/langchain-streamlit-chat-memory-streaming/</link><guid isPermaLink="true">https://example.com/blog/langchain-streamlit-chat-memory-streaming/</guid><description>LangChain RAG를 Streamlit의 chat_input·chat_message·session_state·write_stream과 연결해 대화 기록과 Streaming 응답을 만드는 구조를 쉽게 설명합니다.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate></item><item><title>AI가 사기 거래를 판단하게 해도 될까?</title><link>https://example.com/blog/should-ai-decide-fraud-transactions-ko/</link><guid isPermaLink="true">https://example.com/blog/should-ai-decide-fraud-transactions-ko/</guid><description>규칙, ML, LLM 그리고 SafeFDS 실험을 통한 비교. AI가 모든 거래를 혼자 판단해서는 안 되는 이유와 안전한 자동화의 경계를 설명합니다.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>그럴듯하게 답하면 좋은 AI 서비스일까?</title><link>https://example.com/blog/spring-ai-llm-evaluation-testing/</link><guid isPermaLink="true">https://example.com/blog/spring-ai-llm-evaluation-testing/</guid><description>자연스러운 답변만으로 AI 품질을 판단할 수 있을까요? Spring AI 평가 API부터 RAG·Tool Calling·업무 성공·안전성 평가까지 쉽게 설명합니다.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate></item><item><title>인터넷 없이도 AI 챗봇을 만들 수 있을까?</title><link>https://example.com/blog/spring-ai-local-llm-with-ollama/</link><guid isPermaLink="true">https://example.com/blog/spring-ai-local-llm-with-ollama/</guid><description>Ollama와 Spring AI가 인터넷 연결 없이 로컬 LLM을 호출하는 구조를 살펴보고, 동기·스트리밍 응답과 하드웨어·품질·보안 한계를 설명합니다.</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate></item><item><title>MCP는 Tool Calling과 무엇이 다를까?</title><link>https://example.com/blog/spring-ai-mcp-vs-tool-calling/</link><guid isPermaLink="true">https://example.com/blog/spring-ai-mcp-vs-tool-calling/</guid><description>Spring AI에서 Tool Calling과 MCP가 맡는 역할을 비교하고, MCP Client·Server가 도구·리소스·프롬프트를 연결하는 구조와 보안 경계를 쉽게 설명합니다.</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate></item><item><title>AI는 왜 우리 회사 문서를 모를까?</title><link>https://example.com/blog/spring-ai-rag-company-documents/</link><guid isPermaLink="true">https://example.com/blog/spring-ai-rag-company-documents/</guid><description>LLM이 사내 문서를 자동으로 알지 못하는 이유와 Spring AI RAG가 문서를 나누고 검색해 답변에 전달하는 과정을 쉽게 설명합니다.</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate></item><item><title>AI가 답만 하지 않고 실제 일을 하게 하려면?</title><link>https://example.com/blog/spring-ai-tool-calling-actions/</link><guid isPermaLink="true">https://example.com/blog/spring-ai-tool-calling-actions/</guid><description>Spring AI Tool Calling에서 모델이 도구를 요청하고 애플리케이션이 실행하는 과정을 학교 축제 예약 예제로 설명합니다. @Tool과 인증·인가·멱등성·사람 승인도 살펴봅니다.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Spring AI는 AI 모델을 만드는 도구일까?</title><link>https://example.com/blog/what-is-spring-ai/</link><guid isPermaLink="true">https://example.com/blog/what-is-spring-ai/</guid><description>Spring AI가 모델 학습 도구가 아니라 기존 AI 모델과 Spring 애플리케이션의 데이터·API를 연결하는 프레임워크인 이유를 ChatModel, ChatClient, Advisor의 흐름으로 설명합니다.</description><pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate></item><item><title>100만 사용자가 정말 동시에 접속할까?</title><link>https://example.com/blog/what-one-million-users-really-means-ko/</link><guid isPermaLink="true">https://example.com/blog/what-one-million-users-really-means-ko/</guid><description>회원 100만 명과 동시 접속자 100만 명은 완전히 다르다. MAU, DAU, CCU, RPS를 학교 축제 매점 이야기와 간단한 계산으로 이해한다.</description><pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate></item><item><title>사용자가 몰리면 서버는 어디부터 느려질까?</title><link>https://example.com/blog/where-server-bottlenecks-begin-ko/</link><guid isPermaLink="true">https://example.com/blog/where-server-bottlenecks-begin-ko/</guid><description>요청이 서버와 데이터베이스를 지나가는 길을 따라가며 병목이 생기는 이유와 서버를 무작정 늘리면 해결되지 않는 이유를 쉽게 설명한다.</description><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate></item><item><title>정확해도 늦으면 실패다</title><link>https://example.com/blog/why-accurate-fraud-detection-still-fails-when-slow-ko/</link><guid isPermaLink="true">https://example.com/blog/why-accurate-fraud-detection-still-fails-when-slow-ko/</guid><description>사기 탐지의 답이 늦어지면 왜 정상 이체까지 멈출 수 있는지, 기다림을 끊고 고장을 가두며 대체 처리를 준비해야 하는 이유를 쉽게 설명합니다.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>AI는 같은 질문에도 왜 다른 답을 할까?</title><link>https://example.com/blog/why-ai-gives-different-answers/</link><guid isPermaLink="true">https://example.com/blog/why-ai-gives-different-answers/</guid><description>LLM이 다음 Token을 선택해 답을 만드는 원리와 Temperature가 출력의 다양성에 미치는 영향, Spring AI의 Prompt와 Structured Output을 쉽게 설명합니다.</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate></item><item><title>왜 정상 이체가 갑자기 막힐까? 은행이 사기 거래를 100% 구분할 수 없는 이유</title><link>https://example.com/blog/why-banks-block-legitimate-transfers-ko/</link><guid isPermaLink="true">https://example.com/blog/why-banks-block-legitimate-transfers-ko/</guid><description>은행은 고객의 마음이 아니라 거래에 남은 신호로 위험을 판단합니다. 정상 이체가 잠시 멈출 수밖에 없는 이유와 FDS의 근본적인 한계를 쉽게 설명합니다.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>사기를 더 많이 잡으면 왜 정상 고객도 더 많이 막힐까?</title><link>https://example.com/blog/why-catching-more-fraud-blocks-more-legitimate-transfers-ko/</link><guid isPermaLink="true">https://example.com/blog/why-catching-more-fraud-blocks-more-legitimate-transfers-ko/</guid><description>의심 기준을 낮추면 사기를 더 잡는 대신 정상 고객의 추가 인증과 이체 보류도 늘어납니다. 가상 거래 1만 건으로 탐지율과 고객 불편의 균형을 설명합니다.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>챗봇은 왜 방금 한 말을 잊어버릴까?</title><link>https://example.com/blog/why-chatbots-forget-conversations/</link><guid isPermaLink="true">https://example.com/blog/why-chatbots-forget-conversations/</guid><description>LLM이 이전 대화를 스스로 기억하지 않는 이유와 Spring AI Chat Memory가 Conversation ID로 과거 메시지를 다시 전달하는 원리·비용·보안 한계를 설명합니다.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title>데이터베이스는 데이터가 많아지면 왜 느려질까?</title><link>https://example.com/blog/why-databases-slow-down/</link><guid isPermaLink="true">https://example.com/blog/why-databases-slow-down/</guid><description>데이터베이스가 느려지는 이유를 인덱스, 연결 풀, 트랜잭션과 잠금의 원리로 나누어 쉽게 설명한다.</description><pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate></item><item><title>문서를 넣었는데 RAG는 왜 틀릴까?</title><link>https://example.com/blog/why-rag-gives-wrong-answers/</link><guid isPermaLink="true">https://example.com/blog/why-rag-gives-wrong-answers/</guid><description>Spring AI RAG가 틀리는 원인을 문서 분할, 검색, Top-K, 유사도 기준, metadata, 답변 생성 단계로 나누어 쉽게 설명합니다.</description><pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate></item><item><title>왜 같은 데이터를 여러 곳에 저장할까?</title><link>https://example.com/blog/why-store-the-same-data-in-multiple-places/</link><guid isPermaLink="true">https://example.com/blog/why-store-the-same-data-in-multiple-places/</guid><description>MySQL, Redis, Elasticsearch, MongoDB가 서로 다른 문제를 해결하는 이유와 여러 저장소를 사용할 때 발생하는 동기화 비용을 쉽게 설명한다.</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate></item></channel></rss>