<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Uncategorized &#8211; KGG Studio</title>
	<atom:link href="https://blog.kggstudio.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.kggstudio.com</link>
	<description>개발자 테크 블로그</description>
	<lastBuildDate>Fri, 03 Jul 2026 23:06:18 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://blog.kggstudio.com/wp-content/uploads/2025/05/cropped-K-1-32x32.png</url>
	<title>Uncategorized &#8211; KGG Studio</title>
	<link>https://blog.kggstudio.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">244941309</site>	<item>
		<title>제주 런케이션 DLThon 7월7일~7월10</title>
		<link>https://blog.kggstudio.com/jejuthon/</link>
					<comments>https://blog.kggstudio.com/jejuthon/#respond</comments>
		
		<dc:creator><![CDATA[TimTam]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 06:11:24 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.kggstudio.com/?p=712</guid>

					<description><![CDATA[개요 제주도 문화재, 명소(영화 드라마 촬영지 등) 정보제공 제작배경: 현장에 가면 안내판 정보가 부실한경우가 많음. RAG를 사용해야하는 이유: 데이터가 비정형 텍스트로 다양하게 존재해서 llm의 도움이 있어야 더 폭넓게 검색가능 더불어서 이용자가 원치않는것도 텍스트로 필터링가능. 여러 사이트에 흩어져있는 정보를 한곳에 모음. 데이터 출처 작업과정 웹사이트 사용 경험 (UX) 1안. 핀터레스트처럼 각 아이템의 대표사진을 무작위로 출력 내부에서 ... <a title="제주 런케이션 DLThon 7월7일~7월10" class="read-more" href="https://blog.kggstudio.com/jejuthon/" aria-label="제주 런케이션 DLThon 7월7일~7월10에 대해 더 자세히 알아보세요">더 읽기</a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">개요</h2>



<p class="wp-block-paragraph">제주도 문화재, 명소(영화 드라마 촬영지 등) 정보제공</p>



<p class="wp-block-paragraph">제작배경: 현장에 가면 안내판 정보가 부실한경우가 많음.</p>



<p class="wp-block-paragraph">RAG를 사용해야하는 이유: 데이터가 비정형 텍스트로 다양하게 존재해서 llm의 도움이 있어야 더 폭넓게 검색가능 더불어서 이용자가 원치않는것도 텍스트로 필터링가능. 여러 사이트에 흩어져있는 정보를 한곳에 모음.</p>



<h3 class="wp-block-heading">데이터 출처</h3>



<ul class="wp-block-list">
<li>한국관광공사 TourAPI</li>



<li>제주관광공사 비짓제주 오픈API</li>



<li>국가유산청 (구 문화재청)</li>



<li>한국영상자료원의 영화 로케이션 촬영 이력 — 작품명, 촬영장소, 제작연도, 주소, 위경도 등을 제공하며 전국 촬영 영화 대상 (오픈API)</li>



<li>문화빅데이터포털(<a href="http://bigdata-culture.kr/">bigdata-culture.kr</a>)에도 도깨비, 건축학개론 등 유명 영화드라마 촬영장소의 위치정보를 시군구코드·위경도로 제공</li>
</ul>



<h3 class="wp-block-heading">작업과정</h3>



<ol class="wp-block-list">
<li>돌하르방, 해녀문화등 수집한 데이터를 RAG데이터화 시키기
<ol class="wp-block-list">
<li>사진 (비정형;)</li>



<li>타이틀 (비정형; 돌하르방, 백록담, 해녀, 등등 키워드)</li>



<li>설명 (비정형; 문화재나, 문화관련 심층 설명 외국인이 봐도 알아들을수 있을정도로 그게 왜 유명하고 한국에서 중요한지 설명해줌.) + 설명은 n개를 갖고 출처를 같이 저장.</li>



<li>비용 (정형; 해당 장소를 이용할때 드는 기본비용)</li>



<li>시간 (정형;)</li>
</ol>
</li>



<li>입력: 사진, 프롬프트, 보이스 (토큰이 허용된다면 ㅋ)<br>(사진): llm을활용해서 입력된사진과 DB사진 비교 해서 찾기<br>(보이스): text화 해서 text로 처리<br>(텍스트): 하이브리드 (BM25 키워드 + Vector Search)</li>



<li>출력: 이용자가 원하는 언어로 llm을사용해 번역하여 제공 + 원문보여주기. 한번 번역한건 캐시하여 재사용.</li>
</ol>



<h3 class="wp-block-heading">웹사이트 사용 경험 (UX)</h3>



<h4 class="wp-block-heading">1안. 핀터레스트처럼 각 아이템의 대표사진을 무작위로 출력</h4>



<p class="wp-block-paragraph">내부에서 필터로 원하는 아이템 검색</p>



<ul class="wp-block-list">
<li>사진업로드 = 유사사진검색 (돌하르방 사진 올리면 돌하르방에대해서 알려주고 어디서 볼수있는지 안내해줌.)</li>



<li>아이템 이름 키워드 BM25 (단순히 DB에있는 아이템과 검색)</li>



<li>설명 검색 임베딩 (예를들어 검은옷입고 잠수하는 해녀에대한 묘사를 하면 유사한 해녀문화를 찾아서 사진과함께 설명을 알려주고, 해녀들이 많이 있는곳이나 해녀체험하는곳 관련이벤트정보를 찾아줌)</li>
</ul>



<h3 class="wp-block-heading">홈 화면</h3>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="751" height="859" data-attachment-id="716" data-permalink="https://blog.kggstudio.com/jejuthon/image-164/#main" data-orig-file="https://blog.kggstudio.com/wp-content/uploads/2026/07/image.png" data-orig-size="751,859" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://blog.kggstudio.com/wp-content/uploads/2026/07/image.png" src="https://blog.kggstudio.com/wp-content/uploads/2026/07/image.png" alt="" class="wp-image-716" srcset="https://blog.kggstudio.com/wp-content/uploads/2026/07/image.png 751w, https://blog.kggstudio.com/wp-content/uploads/2026/07/image-262x300.png 262w" sizes="(max-width: 751px) 100vw, 751px" /></figure>



<h3 class="wp-block-heading">돌하르방 검색 결과</h3>



<figure class="wp-block-image size-full"><img decoding="async" width="733" height="871" data-attachment-id="718" data-permalink="https://blog.kggstudio.com/jejuthon/image-165/#main" data-orig-file="https://blog.kggstudio.com/wp-content/uploads/2026/07/image-1.png" data-orig-size="733,871" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://blog.kggstudio.com/wp-content/uploads/2026/07/image-1.png" src="https://blog.kggstudio.com/wp-content/uploads/2026/07/image-1.png" alt="" class="wp-image-718" srcset="https://blog.kggstudio.com/wp-content/uploads/2026/07/image-1.png 733w, https://blog.kggstudio.com/wp-content/uploads/2026/07/image-1-252x300.png 252w" sizes="(max-width: 733px) 100vw, 733px" /></figure>



<p class="wp-block-paragraph">홈화면 디자인파일</p>



<p class="wp-block-paragraph"><a href="https://drive.google.com/file/d/1Fa8JFHRbIPV1tOEIElLh8JP4YHNh7YJ_/view?usp=drive_link">https://drive.google.com/file/d/1Fa8JFHRbIPV1tOEIElLh8JP4YHNh7YJ_/view?usp=drive_link</a></p>



<p class="wp-block-paragraph">검색결과 디자인파일</p>



<p class="wp-block-paragraph"><a href="https://drive.google.com/file/d/1iO1h8NaMTZcGBTgyAapPimZDemdjefnp/view?usp=drive_link">https://drive.google.com/file/d/1iO1h8NaMTZcGBTgyAapPimZDemdjefnp/view?usp=drive_link</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kggstudio.com/jejuthon/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">712</post-id>	</item>
		<item>
		<title>RAG (1) &#8211; 2026년 5월 기준으로 작성</title>
		<link>https://blog.kggstudio.com/rag-1-2026%eb%85%84-5%ec%9b%94-%ea%b8%b0%ec%a4%80%ec%9c%bc%eb%a1%9c-%ec%9e%91%ec%84%b1/</link>
					<comments>https://blog.kggstudio.com/rag-1-2026%eb%85%84-5%ec%9b%94-%ea%b8%b0%ec%a4%80%ec%9c%bc%eb%a1%9c-%ec%9e%91%ec%84%b1/#respond</comments>
		
		<dc:creator><![CDATA[TimTam]]></dc:creator>
		<pubDate>Wed, 27 May 2026 05:18:12 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.kggstudio.com/?p=695</guid>

					<description><![CDATA[RAG 요약 RAG란 (Retrieval-Augmented Generation = 검색 증강 생성) 이란 뜻으로, 언어모델이 특정 데이터를 검색하여 답변을 생성하는 방식을 말합니다. RAG의 장점 AI Model 자체 성능에 모든걸 의존하는건 비효율적이고 사실상 AI 자체 메모리(학습내용)가 커지면 커질수록 연산량은 기하급수적으로 증가하기때문에, 모델성능은 필요한 언어를 잘 이해하고 요약이나 생성 할수 있을정도면 충분하고, 답변을 생성할때 필요한 지식부분은 별도의 DATA에 의존하게 함으로써 ... <a title="RAG (1) &#8211; 2026년 5월 기준으로 작성" class="read-more" href="https://blog.kggstudio.com/rag-1-2026%eb%85%84-5%ec%9b%94-%ea%b8%b0%ec%a4%80%ec%9c%bc%eb%a1%9c-%ec%9e%91%ec%84%b1/" aria-label="RAG (1) &#8211; 2026년 5월 기준으로 작성에 대해 더 자세히 알아보세요">더 읽기</a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">RAG 요약</h2>



<h4 class="wp-block-heading">RAG란 (Retrieval-Augmented Generation = 검색 증강 생성) 이란 뜻으로, 언어모델이 특정 데이터를 검색하여 답변을 생성하는 방식을 말합니다.</h4>



<h4 class="wp-block-heading">RAG의 장점</h4>



<p class="wp-block-paragraph">AI Model 자체 성능에 모든걸 의존하는건 비효율적이고 사실상 AI 자체 메모리(학습내용)가 커지면 커질수록 연산량은 기하급수적으로 증가하기때문에, 모델성능은 필요한 언어를 잘 이해하고 요약이나 생성 할수 있을정도면 충분하고, 답변을 생성할때 필요한 지식부분은 별도의 DATA에 의존하게 함으로써 모델의 성능(속도 퍼포먼스 측면)을 취할수있고 연산량도 최적화시킬수있고, 데이터의 정확성도 높일수있는 즉, 언어모델이 효율적으로 작동하게 할수있는 기법이라고 볼수있음.</p>



<h4 class="wp-block-heading">Fine-Tuning 과 차이점</h4>



<p class="wp-block-paragraph">Fine-Tuinng은 사전 학습모델을 살짝 변형시키는 구조로, 어떤 기능추가라거나 모델이 참고할 데이터(지식)를 추가해주는것이 가능하지만, 해당 데이터나 기능추가부분이 가중치의 일부로 흡수되는 방식이여서 RAG방식보다 새로운 데이터에 대한 명확성이 떨어질 수 있음.</p>



<h4 class="wp-block-heading">정리하면..</h4>



<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">graph TD;
A[Pretrained Model]
B[Fine Tuning]
C[RAG]</pre></div>



<ul class="wp-block-list">
<li>Pretrained Model(사전학습모델): 언어를 당담. 여러가지 언어를(용도에 필요한) 이해하고 번역이가능하고, 뜻을이해해서 유사문장을 가려낼수있고, 특정 의미를 담는 문장을 생성할수있음.</li>



<li>Fine Tuning(전이 학습): 사전학습모델이 특정 기능을 더 잘 할수있도록 업데이트함. (optional, 사전학습모델이 원하는기능을 할수 없을때만 하면 됨)</li>



<li>RAG(검색 증강 생성): 언어모델이 미리 구축된 DATABASE에서 <strong>쿼리</strong>를통해 필요한 정보를 <strong>검색</strong>해서 답변을 <strong>생성</strong>하는 방법.</li>
</ul>



<p class="wp-block-paragraph">요약하면 RAG를 적용할경우 언어모델은 <strong>지능</strong> 역할을 하고, RAG에서 사용되는 데이터는 <strong>지식</strong>의 역할을함.</p>



<p class="wp-block-paragraph">여기서 또 고려해야 하는점은 사전학습모델은 지능의 역할을 하는데, 학습방법이 지식을 통해서 지능을 높이기때문에 일정 지능을 갖추려면 지식도 많이 알려줘야 한다는점</p>



<p class="wp-block-paragraph">RAG 데이터는 지식 역할을 한다지만, 데이터가 RAW 데이터로 다 저장되기때문에 저장 용량을 많이 차지함.</p>



<p class="wp-block-paragraph">모델의 지능이 낮으면 RAG의 데이터를 활용할수없고 RAG데이터가 너무많아지면 가중치용량보다 더커질수있어서 밸런스를 맞추는게 필요함.</p>



<h2 class="wp-block-heading">기본 RAG 아키텍쳐</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="602" data-attachment-id="696" data-permalink="https://blog.kggstudio.com/rag-1-2026%eb%85%84-5%ec%9b%94-%ea%b8%b0%ec%a4%80%ec%9c%bc%eb%a1%9c-%ec%9e%91%ec%84%b1/image-159/#main" data-orig-file="https://blog.kggstudio.com/wp-content/uploads/2026/05/image-68.png" data-orig-size="1195,703" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://blog.kggstudio.com/wp-content/uploads/2026/05/image-68-1024x602.png" src="https://blog.kggstudio.com/wp-content/uploads/2026/05/image-68-1024x602.png" alt="" class="wp-image-696" srcset="https://blog.kggstudio.com/wp-content/uploads/2026/05/image-68-1024x602.png 1024w, https://blog.kggstudio.com/wp-content/uploads/2026/05/image-68-300x176.png 300w, https://blog.kggstudio.com/wp-content/uploads/2026/05/image-68-768x452.png 768w, https://blog.kggstudio.com/wp-content/uploads/2026/05/image-68.png 1195w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">RAG 역사</h2>



<ol class="wp-block-list">
<li>Naive RAG: 위 그림같은 구조로 검색하여 찾은 데이터를 제공함.</li>



<li>Advanced RAG: <strong>더 잘 검색</strong>하고, <strong>필터링</strong>한 후, <strong>정리해서 제공</strong>한다.</li>



<li>Modular RAG: 검색, 판단, 도구, 재검색, 검증 을 레고처럼 조립힌다.</li>



<li>Graph RAG: GraphRAG는 문서를 단순 chunk 목록으로 보지 않고, entity와 relationship 중심의 graph로 바꿔서 검색·요약하는 방식입니다. Microsoft Research는 GraphRAG를 텍스트 추출, 네트워크 분석, LLM prompting/summarization을 결합한 end-to-end 시스템으로 설명합니다.</li>



<li>Self-RAG: 모델이 <strong>언제 검색할지</strong>, <strong>검색 결과를 사용할지</strong>, <strong>답변이 근거에 맞는지</strong>를 스스로 판단하게 만드는 방향입니다.</li>



<li>CRAG (Corrective RAG): CRAG는 검색 결과가 나쁠 때 <strong>교정 행동</strong>을 넣는 방식입니다. 검색된 문서의 품질을 평가하는 lightweight retrieval evaluator를 두고, confidence에 따라 다른 retrieval action을 실행합니다</li>



<li>RAPTOR:</li>



<li>Contextual Retrival:</li>



<li>Late Chunking:</li>



<li>RAFT:</li>



<li>Agentic RAG:</li>
</ol>



<p class="wp-block-paragraph">4번~11번은 최신 변화중인 RAG 기법들</p>



<h3 class="wp-block-heading">1. Naive RAG (구현 쉬움, 검색결과가 안좋으면 답변 퀄리티도 안좋음)</h3>



<p class="wp-block-paragraph">사용자가 &#8220;회사 휴가 규정 알려줘&#8221; 라고 물으면 벡터 DB에서 휴가 관련 chunk를 몇개 가져와서 LLM에게 같이 넣어주는 방식.</p>



<pre class="wp-block-code"><code>문서 준비
→ chunk 분할
→ embedding
→ vector DB 저장
→ 사용자 질문 embedding
→ 유사 chunk 검색 top-k
→ LLM에게 context로 넣기
→ 답변 생성</code></pre>



<h4 class="wp-block-heading">검색 결과를 그대로 제공하기때문에, 관련 있어 보이지만, 실제로는 도움이 안되는 답변일 경우가 많음.</h4>



<h3 class="wp-block-heading">2. Advanced RAG</h3>



<p class="wp-block-paragraph">Naive RAG과 유사하지만, 검색 전후에 여러 개선 단계를 추가함</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>기법</th><th>설명</th></tr></thead><tbody><tr><td><strong>Hybrid Search</strong></td><td>벡터 검색 + BM25 키워드 검색을 같이 사용</td></tr><tr><td><strong>Reranking</strong></td><td>검색된 20~50개 문서 중 진짜 관련 높은 것만 다시 정렬</td></tr><tr><td><strong>Query Rewrite</strong></td><td>사용자의 질문을 검색하기 좋은 형태로 재작성</td></tr><tr><td><strong>Multi-query Retrieval</strong></td><td>질문을 여러 버전으로 바꿔서 검색</td></tr><tr><td><strong>Query Decomposition</strong></td><td>복잡한 질문을 작은 질문 여러 개로 분해</td></tr><tr><td><strong>Context Compression</strong></td><td>검색된 문서에서 답변에 필요한 부분만 압축</td></tr><tr><td><strong>Metadata Filtering</strong></td><td>날짜, 카테고리, 작성자, 문서 타입 등으로 필터링</td></tr><tr><td><strong>Parent-child Chunking</strong></td><td>작은 chunk로 검색하고, 실제 context는 더 큰 parent 문단을 사용</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">예를 들어 “2023년과 2024년 매출 차이와 원인을 알려줘”라는 질문은 한 번의 검색으로는 부족할 수 있습니다. Advanced RAG는 질문을 “2023년 매출”, “2024년 매출”, “매출 변화 원인”처럼 쪼개서 검색한 뒤, 결과를 합쳐 답하게 만들 수 있습니다.</p>



<h4 class="wp-block-heading">장점</h4>



<p class="wp-block-paragraph">Naive RAG보다 훨씬 실무적입니다.<br><strong>검색 실패율을 낮출</strong> 수 있습니다.<br>문서가 많아져도 어느 정도 대응 가능합니다.<br>회사 문서 검색, 기술문서 QA, 법률/계약서 분석 같은 곳에 적합합니다.</p>



<h4 class="wp-block-heading">단점</h4>



<p class="wp-block-paragraph">구성이 복잡해집니다.<br>검색, reranking, LLM 호출이 늘어나 <strong>비용과 latency가 증가</strong>합니다.<br>잘못 설계하면 “복잡한데 성능은 별로 안 좋아지는” 상태가 됩니다.</p>



<h3 class="wp-block-heading">3. Modular  RAG</h3>



<p class="wp-block-paragraph">Modular RAG는 단순히 “Advanced RAG보다 더 고급”이라기보다는, RAG 시스템을 <strong>모듈 단위로 분해해서 필요에 따라 조립하는 구조</strong>입니다. </p>



<p class="wp-block-paragraph">예를들면 이런식 입니다. 핵심은 <strong>질문에 따라 다른 경로를 선택한다는 것</strong>입니다.</p>



<pre class="wp-block-code"><code>Router
→ Query Analyzer
→ Retriever A: Vector DB
→ Retriever B: SQL DB
→ Retriever C: Web Search
→ Reranker
→ Verifier
→ Generator
→ Citation Checker</code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>질문</th><th>사용 모듈</th></tr></thead><tbody><tr><td>“이 문서 요약해줘”</td><td>문서 chunk retrieval + summarizer</td></tr><tr><td>“지난달 매출 알려줘”</td><td>SQL query generator + DB lookup</td></tr><tr><td>“최근 뉴스까지 반영해줘”</td><td>web search + retriever</td></tr><tr><td>“계약서 위험 조항 찾아줘”</td><td>legal retriever + reranker + verifier</td></tr><tr><td>“전체 문서의 주요 테마 알려줘”</td><td>GraphRAG 또는 hierarchical summarization</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">장점</h3>



<p class="wp-block-paragraph">확장성이 좋습니다.<br>문서 검색, DB 조회, API 호출, 웹 검색, 코드 실행 등을 하나의 RAG 시스템 안에 넣을 수 있습니다.<br>복잡한 업무 자동화에 적합합니다.<br>Agentic RAG와 결합하기 쉽습니다.</p>



<h3 class="wp-block-heading">단점</h3>



<p class="wp-block-paragraph">설계 난도가 높습니다.<br>모듈 간 데이터 형식, 실패 처리, 비용 관리, 평가 시스템이 필요합니다.<br>작은 프로젝트에는 과할 수 있습니다.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<ol class="wp-block-list">
<li>Chunking 전략</li>



<li>Embedding 모델</li>



<li>Vector Database -&gt; Chroma DB Python 한 줄 설치, 디스크에 저장, 학습 프로토타입의 기본 선택</li>



<li>Retriever ( Similarity Search vs MMR &#8211; Maximal Marginal Relevance )</li>
</ol>



<h3 class="wp-block-heading">Deep Dive</h3>



<p class="wp-block-paragraph">PDF 깨지지않게</p>



<ul class="wp-block-list">
<li>OCR</li>



<li>PDF Parser</li>
</ul>



<p class="wp-block-paragraph">저장된 Chunk 는 json</p>



<p class="wp-block-paragraph">Parent-child Chunking (계층구조)</p>



<p class="wp-block-paragraph">Query Rewriting</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kggstudio.com/rag-1-2026%eb%85%84-5%ec%9b%94-%ea%b8%b0%ec%a4%80%ec%9c%bc%eb%a1%9c-%ec%9e%91%ec%84%b1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">695</post-id>	</item>
		<item>
		<title>OpenJarvis install (on Mac)</title>
		<link>https://blog.kggstudio.com/openjarvis-install-on-mac/</link>
					<comments>https://blog.kggstudio.com/openjarvis-install-on-mac/#respond</comments>
		
		<dc:creator><![CDATA[TimTam]]></dc:creator>
		<pubDate>Tue, 14 Apr 2026 13:51:36 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://blog.kggstudio.com/?p=467</guid>

					<description><![CDATA[https://github.com/open-jarvis 공식 사이트 참조 Javis 설치 git clone 프로젝트 경로에서 의존성 동기화: uv sync를 실행하여 핵심 프레임워크를 설치한다. 만약 원격 클라이언트와의 통신을 위한 FastAPI 서버 기능을 포함하려면 uv sync --extra server 옵션을 사용해야 한다 Rust Native 설치 (이미 설치되어있으면 스킵) 설치 설치 후 환경변수 추가 필수 설치 확인 Javis 이어서 설치 OpenJavis 빌드 파이썬 버전이 ... <a title="OpenJarvis install (on Mac)" class="read-more" href="https://blog.kggstudio.com/openjarvis-install-on-mac/" aria-label="OpenJarvis install (on Mac)에 대해 더 자세히 알아보세요">더 읽기</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://github.com/open-jarvis">https://github.com/open-jarvis</a></p>



<p class="wp-block-paragraph">공식 사이트 참조</p>



<h2 class="wp-block-heading">Javis 설치</h2>



<p class="wp-block-paragraph">git clone</p>



<pre class="wp-block-code"><code>git clone https://github.com/open-jarvis/OpenJarvis.git</code></pre>



<p class="wp-block-paragraph">프로젝트 경로에서</p>



<pre class="wp-block-code"><code>cd OpenJarvis</code></pre>



<p class="wp-block-paragraph"><strong>의존성 동기화</strong>: <code>uv sync</code>를 실행하여 핵심 프레임워크를 설치한다. 만약 원격 클라이언트와의 통신을 위한 FastAPI 서버 기능을 포함하려면 <code>uv sync --extra server</code> 옵션을 사용해야 한다</p>



<pre class="wp-block-code"><code><code>uv sync --extra server</code></code></pre>



<h3 class="wp-block-heading">Rust Native 설치 (이미 설치되어있으면 스킵)</h3>



<p class="wp-block-paragraph">설치</p>



<pre class="wp-block-code"><code>curl https://sh.rustup.rs -sSf | sh</code></pre>



<pre class="wp-block-code"><code>Current installation options:


   default host triple: aarch64-apple-darwin  ## 정상
     default toolchain: stable (default)          ## stable
               profile: default
  modify PATH variable: yes

1) Proceed with standard installation (default - just press enter)
2) Customize installation
3) Cancel installation

그냥 엔터

2번은 CI 최적화 하거나 어떤이유로 최소한으로만 설치하거나, Rust 버전 지정하거나, nightly 기능 필요할때</code></pre>



<p class="wp-block-paragraph">설치 후 환경변수 추가 필수</p>



<pre class="wp-block-code"><code>source $HOME/.cargo/env</code></pre>



<p class="wp-block-paragraph">설치 확인</p>



<pre class="wp-block-code"><code>rustc --version
cargo --version</code></pre>



<h3 class="wp-block-heading">Javis 이어서 설치</h3>



<p class="wp-block-paragraph">OpenJavis 빌드</p>



<pre class="wp-block-code"><code>uv run maturin develop -m rust/crates/openjarvis-python/Cargo.toml</code></pre>



<p class="wp-block-paragraph">파이썬 버전이 <strong>3.14 이상</strong>인경우  <strong>환경변수 설정</strong>해야함</p>



<p class="wp-block-paragraph">이미 컴파일했어도 걱정하지말고 아래 명령어를 실행. 환경변수 관련된 부분만 재 컴파일됨.</p>



<pre class="wp-block-code"><code>export PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1
uv run maturin develop -m rust/crates/openjarvis-python/Cargo.toml</code></pre>



<p class="wp-block-paragraph">여기까지 하면 설치 끝</p>



<h2 class="wp-block-heading">하드웨어 진단 및 초기설정</h2>



<p class="wp-block-paragraph">이 유틸리티는 macOS의 CPU, RAM 용량, 그리고 GPU 가속 가능 여부를 탐지하여 적합한 추론 엔진(Ollama 등)과 모델 크기를 추천한다.</p>



<pre class="wp-block-code"><code>uv run jarvis init</code></pre>



<h2 class="wp-block-heading">에이전트 사용시**</h2>



<p class="wp-block-paragraph">에이전트 사용시엔 모델성능(지능) 보다는 context size가 더 중요. M1 Max를 에이전트로 활요하기위해 모델 크기 9.6gb 짜리 <a href="https://ollama.com/library/gemma4:e4b-it-q4_K_M">gemma4:e4b-it-q4_K_M</a> 선택함. 위에 모델은 18GB짜리라서 context늘리고 혹시 컴파일하거나 에이전트가 이런저런 작업을할때 메모리가 부족해짐.</p>



<pre class="wp-block-code"><code>ollama pull gemma4:e4b-it-q4_K_M</code></pre>



<p class="wp-block-paragraph">어떤 엔진을 사용할건지 물어본다. 올라마를 이미 설치했기때문에 (running) 표시가 있다.</p>



<p class="wp-block-paragraph">mlx가 애플 GPU 최적화모델이라서 (recommended)가 있는데 mlx는 instruction 모델이 없다. 어쩔수없이 올라마 사용.</p>



<pre class="wp-block-code"><code>Detecting running inference engines...
  Found running: ollama

Available engines:
  ollama  (running)
  mlx  (recommended)
  vllm
  sglang
  llamacpp
  lmstudio
  exo
  nexa

Select inference engine (ollama, mlx, vllm, sglang, llamacpp, lmstudio, exo, nexa) &#91;ollama]:</code></pre>



<p class="wp-block-paragraph">기본 설정파일 내용</p>



<pre class="wp-block-code"><code>╭───────────────── /Users/_name_/.openjarvis/config.toml ──────────────────╮
│ # OpenJarvis configuration                                                                                                                                                                                    │
│ # Hardware: Apple M1 Max (10 cores, 32.0 GB RAM)                                                                                                                                                              │
│ # GPU: Apple M1 Max (32.0 GB unified memory)                                                                                                                                                                  │
│ # Full reference config: jarvis init --full                                                                                                                                                                   │
│                                                                                                                                                                                                               │
│ &#91;engine]                                                                                                                                                                                                      │
│ default = "ollama"                                                                                                                                                                                            │
│                                                                                                                                                                                                               │
│ &#91;engine.ollama]                                                                                                                                                                                               │
│ # host = "http://localhost:11434"  # set to remote URL if engine runs elsewhere                                                                                                                               │
│                                                                                                                                                                                                               │
│ &#91;intelligence]                                                                                                                                                                                                │
│ default_model = "qwen3.5:9b"                                                                                                                                                                                  │
│                                                                                                                                                                                                               │
│ &#91;agent]                                                                                                                                                                                                       │
│ default_agent = "simple"                                                                                                                                                                                      │
│                                                                                                                                                                                                               │
│ &#91;tools]                                                                                                                                                                                                       │
│ enabled = &#91;"code_interpreter", "web_search", "file_read", "shell_exec"]                                                                                                                                       │
│                                                                                                                                                                                                               │
╰─────────────────────────────────────────────────────╯</code></pre>



<h2 class="wp-block-heading">모델 설정 방법</h2>



<p class="wp-block-paragraph">아래 명령어로 config파일을 수정한다. _name_ 은 사용자계정이름.</p>



<pre class="wp-block-code"><code>sudo nano /Users/_name_/.openjarvis/config.toml</code></pre>



<p class="wp-block-paragraph">default_model 을 우리가 사용하는 모델로 수정해주고 저장</p>



<pre class="wp-block-code"><code>default_model = "gemma4:e4b-it-q4_K_M"</code></pre>



<h2 class="wp-block-heading">시스템 정검</h2>



<p class="wp-block-paragraph"><strong>시스템 점검</strong>: 설치 중 문제가 발생하거나 성능이 기대에 미치지 못할 경우 <code>uv run jarvis doctor</code>를 실행하여 하드웨어 상태와 의존성 무결성을 진단할 수 있다.</p>



<pre class="wp-block-code"><code>uv run jarvis doctor</code></pre>



<h2 class="wp-block-heading">클라우드 엔진 연동</h2>



<p class="wp-block-paragraph" id="p-c_02fa3a37d8edeffc_ac452499-4907-4115-9074-2212ea37e10e-143">로컬 자원이 부족하거나 보다 강력한 추론 능력이 필요한 경우, OpenAI, Anthropic, Google Gemini 등의 클라우드 API를 병행하여 사용할 수 있다. 이를 위해 <code>.env</code> 파일 또는 환경 변수에 다음과 같은 API 키를 설정해야 한다.<sup></sup></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>서비스 제공자</strong></td><td><strong>환경 변수명</strong></td><td><strong>용도</strong></td></tr></thead><tbody><tr><td><strong>OpenAI</strong></td><td><code>OPENAI_API_KEY</code></td><td>GPT-4o 등 고성능 비전 및 추론 모델 사용 <sup></sup></td></tr><tr><td><strong>Anthropic</strong></td><td><code>ANTHROPIC_API_KEY</code></td><td>Claude 3.5 Sonnet 등 정교한 코딩 및 문서 분석 <sup></sup></td></tr><tr><td><strong>Google</strong></td><td><code>GOOGLE_API_KEY</code></td><td>Gemini 모델을 통한 방대한 컨텍스트 처리 <sup></sup></td></tr></tbody></table></figure>



<h2 class="wp-block-heading">지능형 에이전트 포트폴리오 및 세부 활용 가이드</h2>



<div>
<p class="wp-block-paragraph" id="p-c_02fa3a37d8edeffc_ac452499-4907-4115-9074-2212ea37e10e-146">OpenJarvis의 핵심 가치는 특정 목적에 맞게 설계된 다양한 빌트인 에이전트들에 있다. 각 에이전트는 독립적인 사고 루프와 도구 사용 능력을 갖추고 있어 복잡한 작업을 자율적으로 수행한다.<sup></sup></p>



<figure class="wp-block-embed is-type-wp-embed is-provider-marktechpost wp-block-embed-marktechpost"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="Mrpfnz18Io"><a href="https://www.marktechpost.com/2026/03/12/stanford-researchers-release-openjarvis-a-local-first-framework-for-building-on-device-personal-ai-agents-with-tools-memory-and-learning/">Stanford Researchers Release OpenJarvis: A Local-First Framework for Building On-Device Personal AI Agents with Tools, Memory, and Learning</a></blockquote><iframe loading="lazy" class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Stanford Researchers Release OpenJarvis: A Local-First Framework for Building On-Device Personal AI Agents with Tools, Memory, and Learning&#8221; &#8212; MarkTechPost" src="https://www.marktechpost.com/2026/03/12/stanford-researchers-release-openjarvis-a-local-first-framework-for-building-on-device-personal-ai-agents-with-tools-memory-and-learning/embed/#?secret=Tb0ROmQhEU#?secret=Mrpfnz18Io" data-secret="Mrpfnz18Io" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
</div>



<h3 class="wp-block-heading">에이전트 유형 및 주요 기능 비교</h3>



<p class="wp-block-paragraph">OpenJarvis가 제공하는 에이전트들은 작업의 호흡(Short-horizon vs Long-horizon)과 개입 방식에 따라 구분된다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><td><strong>에이전트 명칭</strong></td><td><strong>실행 유형</strong></td><td><strong>주요 역할 및 특징</strong></td></tr></thead><tbody><tr><td><strong>Morning Digest</strong></td><td>스케줄 기반 (Cron)</td><td>이메일, 일정, 건강 데이터를 종합하여 음성 브리핑 생성 <sup></sup></td></tr><tr><td><strong>Deep Research</strong></td><td>온디맨드 (요청 시)</td><td>웹 및 로컬 문서를 가로지르는 다중 단계 심층 조사 <sup></sup></td></tr><tr><td><strong>Monitor Operative</strong></td><td>지속형 (Continuous)</td><td>장기적인 데이터 모니터링, 압축 저장 및 필요 시 호출 <sup></sup></td></tr><tr><td><strong>Orchestrator</strong></td><td>온디맨드 (요청 시)</td><td>복잡한 과업을 하위 작업으로 분해하고 적절한 도구 선택 <sup></sup></td></tr><tr><td><strong>Native ReAct</strong></td><td>온디맨드 (요청 시)</td><td>&#8216;생각-행동-관찰&#8217; 루프를 통한 터미널 도구 및 코드 실행 <sup></sup></td></tr><tr><td><strong>Operative</strong></td><td>지속형 (Continuous)</td><td>상태 관리를 동반한 반복적인 개인 워크플로우 자동화 <sup></sup></td></tr><tr><td><strong>Simple</strong></td><td>온디맨드 (요청 시)</td><td>도구 사용이 필요 없는 가벼운 단일 턴 대화</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">심층 연구 에이전트 (Deep Research) 활용법</h3>



<p class="wp-block-paragraph"><code>deep_research</code> 에이전트는 단순한 검색을 넘어 수십 개의 소스를 분석하여 구조화된 보고서를 작성한다.</p>



<ul class="wp-block-list">
<li><strong>준비 과정</strong>: <code>jarvis init --preset deep-research</code> 명령어로 환경을 설정하고, <code>jarvis memory index./documents/</code>를 통해 사용자의 로컬 PDF나 텍스트 문서를 지능형 메모리에 인덱싱한다.</li>



<li><strong>실행 예시</strong>: <code>jarvis ask "최근 2년간의 로컬 LLM 효율성 추세에 대해 보고서를 작성해줘"</code>라고 명령하면, 에이전트는 로컬 인덱스와 웹 검색을 병행하여 인라인 인용이 포함된 정교한 문서를 생성한다.</li>



<li><strong>성능 지표</strong>: 대략 11분 동안 25개 이상의 상위 소스와 100개 이상의 웹 페이지를 분석할 수 있는 능력을 갖추고 있다.</li>
</ul>



<h3 class="wp-block-heading">개인 업무 요약 에이전트 (Morning Digest) 활용법</h3>



<p class="wp-block-paragraph"><code>morning_digest</code>는 매일 아침 사용자의 개인 데이터를 종합하여 맞춤형 정보를 제공한다.</p>



<ol start="1" class="wp-block-list">
<li><strong>연동 설정</strong>: <code>jarvis connect gdrive</code>를 실행하여 Google 계정(Gmail, Calendar, Tasks)에 대한 OAuth 인증을 수행한다. 이 과정은 SSH 환경에서 생성된 링크를 로컬 브라우저에서 승인하는 방식으로 진행된다.</li>



<li><strong>브리핑 생성</strong>: <code>jarvis digest --fresh</code> 명령어를 사용하면 에이전트가 최신 데이터를 긁어모아 TTS(Text-to-Speech) 오디오와 텍스트 요약을 생성한다.</li>



<li><strong>자동화</strong>: <code>launchd</code>나 <code>cron</code>을 통해 매일 오전 7시에 이 명령이 실행되도록 설정함으로써 완전 자율형 개인 비서를 구현할 수 있다.</li>
</ol>



<pre class="wp-block-code"><code>uv run jarvis connect gdrive

실행하면 ClientID 입력하라고 나오는데 바로 위에있는 구글 클라우드 링크로 들어가서

<strong>OAuth 클라이언트 ID 만들기</strong> 눌러서

클라이언트 ID &amp; 클라이언트 보안 비밀번호 를 차례로 입력해주면 된다.

그럼 로컬 컴퓨터(OpenJarvis가 설치된 컴퓨터)에서 웹브라우저가 뜨고</code></pre>



<h2 class="wp-block-heading">원격 SSH 환경에서의 프로세스 영속성 관리</h2>



<p class="wp-block-paragraph">SSH 접속은 네트워크 불안정성으로 인해 언제든 끊길 수 있다. 따라서 OpenJarvis와 같은 에이전트 프레임워크를 안정적으로 운용하기 위해서는 프로세스를 세션과 분리하는 기술이 필수적이다.</p>



<h3 class="wp-block-heading">터미널 멀티플렉서 (tmux) 활용</h3>



<p class="wp-block-paragraph"><code>tmux</code>는 원격 접속이 끊겨도 터미널 내 프로세스를 유지시켜 주는 가장 직관적인 도구다.</p>



<ul class="wp-block-list">
<li><strong>세션 생성</strong>: <code>tmux new -s jarvis_session</code> 명령어로 새로운 작업 공간을 만든다.</li>



<li><strong>작업 수행</strong>: 해당 세션 안에서 <code>uv run jarvis ask...</code> 또는 <code>uv run jarvis serve</code>를 실행한다.</li>



<li><strong>세션 이탈</strong>: <code>Ctrl+B</code>를 누른 후 <code>D</code>를 눌러 세션에서 빠져나온다. 이후 SSH를 종료해도 에이전트는 계속 구동된다.</li>



<li><strong>재접속</strong>: 나중에 다시 SSH로 접속하여 <code>tmux attach -t jarvis_session</code>을 입력하면 이전 작업 상태를 그대로 확인할 수 있다.&nbsp;&nbsp;&nbsp;</li>
</ul>



<h3 class="wp-block-heading">macOS 전용 백그라운드 서비스 (launchd) 활용</h3>



<p class="wp-block-paragraph">보다 영구적인 서비스 운영을 위해서는 macOS 고유의 데몬 관리자인 <code>launchd</code>를 사용하는 것이 좋다.</p>



<ol start="1" class="wp-block-list">
<li><strong>Plist 파일 작성</strong>: <code>~/Library/LaunchAgents/com.openjarvis.service.plist</code> 파일을 생성하여 실행 경로와 인자값을 설정한다.</li>



<li><strong>자동 재시작 설정</strong>: <code>KeepAlive</code> 옵션을 <code>true</code>로 설정하면 프로그램이 예기치 않게 종료되어도 시스템이 자동으로 다시 실행해 준다.&nbsp;&nbsp;&nbsp;</li>



<li><strong>서비스 로드</strong>: <code>launchctl load ~/Library/LaunchAgents/com.openjarvis.service.plist</code> 명령어로 서비스를 활성화한다.&nbsp;&nbsp;&nbsp;</li>
</ol>



<h2 class="wp-block-heading">환경 설정 최적화 및 보안 가드레일</h2>



<p class="wp-block-paragraph" id="p-c_02fa3a37d8edeffc_ac452499-4907-4115-9074-2212ea37e10e-157">OpenJarvis의 모든 동작은 <code>~/.openjarvis/config.toml</code> 파일에 의해 제어된다. 이 설정 파일을 정교하게 조정함으로써 에이전트의 권한과 자원 사용량을 최적화할 수 있다.<sup></sup>&nbsp;&nbsp;&nbsp;</p>



<h3 class="wp-block-heading">주요 설정 섹션 (<code>[agent]</code>) 상세 분석</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>필드명</th><th>기본값</th><th>설명 및 권장 설정</th></tr></thead><tbody><tr><td><strong>default_agent</strong></td><td><code>"simple"</code></td><td>주로 사용하는 에이전트(예: <code>orchestrator</code>)로 변경 권장 <sup></sup></td></tr><tr><td><strong>max_turns</strong></td><td><code>10</code></td><td>복잡한 추론을 위해 15-20 정도로 상향 조정 가능 <sup></sup></td></tr><tr><td><strong>context_from_memory</strong></td><td><code>true</code></td><td>질문 시마다 로컬 지식 베이스를 검색하여 컨텍스트에 주입 <sup></sup></td></tr><tr><td><strong>system_prompt</strong></td><td><code>""</code></td><td>에이전트의 페르소나와 제약 사항을 정의하는 최상위 지침 <sup></sup></td></tr></tbody></table></figure>



<h3 class="wp-block-heading">보안 가드레일 섹션 (<code>[security]</code>)</h3>



<p class="wp-block-paragraph">에이전트가 로컬 파일 시스템에 접근하거나 명령어를 실행할 때 발생할 수 있는 위험을 방지하기 위해 OpenJarvis는 강력한 보안 계층을 제공한다.</p>



<ul class="wp-block-list">
<li><strong>실행 모드 (mode)</strong>: <code>warn</code>(경고만), <code>block</code>(차단), <code>redact</code>(민감정보 마스킹) 중 선택할 수 있다. 운영 환경에서는 <code>redact</code> 또는 <code>block</code>을 권장한다.&nbsp;&nbsp;&nbsp;</li>



<li><strong>시스템 경계 (system_boundary)</strong>: 에이전트가 접근할 수 있는 디렉토리 범위를 특정 경로로 제한하여 시스템의 핵심 파일을 보호한다.&nbsp;&nbsp;&nbsp;</li>



<li><strong>도구 실행 확인 (enforce_tool_confirmation)</strong>: 에이전트가 도구를 사용하기 전 항상 사용자의 승인을 받도록 설정할 수 있다. 자율성을 높이려면 이를 <code>false</code>로 설정하되, 보안 위험을 충분히 인지해야 한다.&nbsp;&nbsp;&nbsp;</li>
</ul>



<h2 class="wp-block-heading">스킬 시스템을 통한 에이전트 기능 확장</h2>



<p class="wp-block-paragraph" id="p-c_02fa3a37d8edeffc_ac452499-4907-4115-9074-2212ea37e10e-162">OpenJarvis 에이전트는 기본 기능 외에도 외부에서 개발된 &#8216;스킬(Skills)&#8217;을 학습하고 사용할 수 있다. 이는 Model Context Protocol (MCP) 기반의 도구 표준을 준수한다.<sup></sup>&nbsp;&nbsp;&nbsp;</p>



<h3 class="wp-block-heading">스킬 설치 및 동기화</h3>



<p class="wp-block-paragraph">사용자는 <code>jarvis skill</code> 명령어를 통해 커뮤니티에서 검증된 스킬셋을 간편하게 추가할 수 있다.</p>



<ul class="wp-block-list">
<li><strong>스킬 설치</strong>: <code>jarvis skill install hermes:arxiv</code>와 같이 특정 리포지토리의 스킬을 설치한다.&nbsp;&nbsp;&nbsp;</li>



<li><strong>스킬 동기화</strong>: <code>jarvis skill sync</code>를 통해 설치된 스킬들의 정의와 사용법을 에이전트가 인식할 수 있도록 동기화한다.&nbsp;&nbsp;&nbsp;</li>



<li><strong>동적 활용</strong>: 에이전트는 질문의 의도를 분석하여 필요한 스킬이 있다면 자동으로 호출한다. 예를 들어, &#8220;최근 논문을 검색해줘&#8221;라는 명령에 에이전트는 설치된 <code>arxiv</code> 스킬을 스스로 선택하여 실행한다.&nbsp;&nbsp;&nbsp;</li>
</ul>



<h2 class="wp-block-heading">학습 루프(Learning Loop)와 지속적 최적화 전략</h2>



<p class="wp-block-paragraph" id="p-c_02fa3a37d8edeffc_ac452499-4907-4115-9074-2212ea37e10e-166">OpenJarvis의 독보적인 특징 중 하나는 사용자와의 상호작용 결과를 데이터로 활용하여 스스로 성능을 개선하는 학습 루프에 있다.<sup></sup>&nbsp;&nbsp;&nbsp;</p>



<h3 class="wp-block-heading">추적 데이터(Trace Data) 수집 및 분석</h3>



<p class="wp-block-paragraph" id="p-c_02fa3a37d8edeffc_ac452499-4907-4115-9074-2212ea37e10e-167">시스템은 모든 추론 과정, 도구 호출 시퀀스, 성공 여부를 &#8216;트레이스(Trace)&#8217;라는 구조화된 데이터로 기록한다.<sup></sup> 이 데이터는 다음과 같은 방식으로 활용된다.&nbsp;&nbsp;&nbsp;</p>



<ol start="1" class="wp-block-list">
<li><strong>스킬 최적화</strong>: <code>jarvis optimize skills</code> 명령어를 실행하면, 과거의 성공적인 도구 호출 사례를 바탕으로 모델의 프롬프트나 퓨샷(Few-shot) 예시를 자동으로 업데이트한다.&nbsp;&nbsp;&nbsp;</li>



<li><strong>에이전트 정책 학습</strong>: <code>agent_advisor</code> 정책은 트레이스 패턴을 분석하여 어떤 에이전트와 도구 조합이 가장 효율적이었는지를 학습하고, 향후 유사한 작업에 대해 전략을 수정한다.&nbsp;&nbsp;&nbsp;</li>



<li><strong>로컬 모델 미세 조정</strong>: 충분한 트레이스 데이터가 쌓이면, 사용자의 선호도와 작업 특성에 맞게 로컬 LLM을 SFT(Supervised Fine-Tuning)나 DPO(Direct Preference Optimization) 방식으로 미세 조정할 수 있는 기반이 마련된다.&nbsp;&nbsp;&nbsp;</li>
</ol>



<h2 class="wp-block-heading">시장 내 타 에이전트 프레임워크와의 비교 분석</h2>



<p class="wp-block-paragraph">OpenJarvis를 선택하기 전, 유사한 목적을 가진 다른 도구들과의 차이점을 명확히 이해하는 것이 중요하다. 2026년 기준, 에이전트 시장은 고유의 장단점을 가진 여러 솔루션이 경합하고 있다.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>프레임워크 명칭</th><th>주요 특징</th><th>OpenJarvis 대비 장점</th><th>OpenJarvis 대비 단점</th></tr></thead><tbody><tr><td><strong>Claude Code</strong></td><td>Anthropic 공식 CLI 에이전트</td><td>극도로 높은 추론 및 코딩 능력 <sup></sup></td><td>높은 API 비용 및 프라이버시 우려 <sup></sup></td></tr><tr><td><strong>OpenHands</strong></td><td>Docker 기반 샌드박스 에이전트</td><td>강력한 실행 격리 및 보안 <sup></sup></td><td>복잡한 설정 및 높은 리소스 소모 <sup></sup></td></tr><tr><td><strong>Aider</strong></td><td>Git 기반 페어 프로그래밍 도구</td><td>터미널 작업의 뛰어난 효율성 <sup></sup></td><td>로컬 추론 미지원 및 단일 목적성 <sup></sup></td></tr><tr><td><strong>Codex CLI</strong></td><td>OpenAI 기반 고속 터미널 에이전트</td><td>초당 240개 토큰의 압도적 속도 <sup></sup></td><td>추론 깊이 부족 및 폐쇄형 생태계 <sup></sup></td></tr></tbody></table></figure>



<p class="wp-block-paragraph" id="p-c_02fa3a37d8edeffc_ac452499-4907-4115-9074-2212ea37e10e-172">OpenJarvis는 이러한 경쟁 도구들 사이에서 &#8216;로컬 우선&#8217;과 &#8216;지능 효율성&#8217;이라는 독보적인 위치를 점하고 있다. 특히 하드웨어 텔레메트리와 학습 루프를 통합한 방식은 단순한 도구 사용을 넘어 시스템 전체의 에너지 대비 성능을 최적화하려는 Stanford SAIL의 연구 철학을 충실히 반영하고 있다.<sup></sup>&nbsp;&nbsp;&nbsp;</p>



<h2 class="wp-block-heading">결론 및 향후 운용 제언</h2>



<p class="wp-block-paragraph">macOS 환경에서 SSH를 통한 OpenJarvis 구축은 단순한 소프트웨어 설치 이상의 의미를 갖는다. 이는 사용자의 개인 데이터를 안전하게 보호하면서도 고성능 AI의 혜택을 온전히 누릴 수 있는 &#8216;프라이빗 지능 거점&#8217;을 마련하는 과정이다.</p>



<p class="wp-block-paragraph">효과적인 운용을 위해 다음과 같은 전략적 제언을 남긴다.</p>



<p class="wp-block-paragraph">첫째, <strong>하드웨어 최적화를 적극 활용하라.</strong> Apple Silicon의 특성을 고려하여 <code>jarvis init</code>이 추천하는 엔진 설정을 따르되, 메모리 여유가 있다면 보다 큰 파라미터의 모델로 상향 조정을 검토해야 한다.</p>



<p class="wp-block-paragraph">둘째, <strong>로컬 메모리의 품질이 에이전트의 지능을 결정한다.</strong> <code>deep_research</code>나 <code>orchestrator</code> 에이전트의 성능은 인덱싱된 문서의 양과 질에 직결되므로, 업무와 관련된 주요 문서를 지속적으로 메모리 저장소에 업데이트하는 습관이 필요하다.</p>



<p class="wp-block-paragraph">셋째, <strong>보안과 자율성 사이의 균형을 유지하라.</strong> 초기 설치 단계에서는 <code>enforce_tool_confirmation</code>을 활성화하여 에이전트의 행동 패턴을 관찰하고, 시스템이 안정화됨에 따라 점진적으로 자율 범위를 넓혀가는 접근 방식이 바람직하다.</p>



<p class="wp-block-paragraph">마지막으로, <strong>학습 루프를 통한 주기적 최적화를 수행하라.</strong> 정기적으로 <code>jarvis optimize</code> 명령을 실행하여 시스템이 사용자의 피드백과 과거 기록으로부터 학습할 기회를 제공함으로써, 시간이 흐를수록 더 똑똑해지는 개인화된 AI 에이전트를 완성할 수 있다.</p>



<p class="wp-block-paragraph">OpenJarvis는 지속적으로 진화하는 프레임워크이며, Stanford SAIL의 로드맵에 따라 향후 더 많은 하드웨어 가속기와 복합적인 멀티 에이전트 통신 프로토콜을 지원할 예정이다.<sup></sup> 본 보고서에서 제시한 가이드를 바탕으로 구축된 시스템은 미래의 로컬 AI 생태계에서 핵심적인 역할을 수행할 준비가 된 최첨단 지능형 인프라가 될 것이다.&nbsp;&nbsp;&nbsp;</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.kggstudio.com/openjarvis-install-on-mac/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">467</post-id>	</item>
	</channel>
</rss>
