-- Table structure for table `wp_posts`
--

CREATE TABLE `wp_posts` (
  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `post_author` bigint(20) unsigned NOT NULL DEFAULT 0,
  `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_content` longtext NOT NULL,
  `post_title` text NOT NULL,
  `post_excerpt` text NOT NULL,
  `post_status` varchar(20) NOT NULL DEFAULT 'publish',
  `comment_status` varchar(20) NOT NULL DEFAULT 'open',
  `ping_status` varchar(20) NOT NULL DEFAULT 'open',
  `post_password` varchar(255) NOT NULL DEFAULT '',
  `post_name` varchar(200) NOT NULL DEFAULT '',
  `to_ping` text NOT NULL,
  `pinged` text NOT NULL,
  `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `post_content_filtered` longtext NOT NULL,
  `post_parent` bigint(20) unsigned NOT NULL DEFAULT 0,
  `guid` varchar(255) NOT NULL DEFAULT '',
  `menu_order` int(11) NOT NULL DEFAULT 0,
  `post_type` varchar(20) NOT NULL DEFAULT 'post',
  `post_mime_type` varchar(100) NOT NULL DEFAULT '',
  `comment_count` bigint(20) NOT NULL DEFAULT 0,
  PRIMARY KEY (`ID`),
  KEY `post_name` (`post_name`(191)),
  KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
  KEY `post_parent` (`post_parent`),
  KEY `post_author` (`post_author`)
) ENGINE=InnoDB AUTO_INCREMENT=539 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

--
-- Dumping data for table `wp_posts`
--

INSERT INTO `wp_posts` VALUES
(1,1,'2025-10-12 23:33:24','2025-10-12 23:33:24','<!-- wp:paragraph -->\n<p>Welcome to WordPress. This is your first post. Edit or delete it, then start writing!</p>\n<!-- /wp:paragraph -->','Hello world!','','publish','open','open','','hello-world','','','2025-10-12 23:33:24','2025-10-12 23:33:24','',0,'https://rndpolicy.org/aidev/?p=1',0,'post','',1),
(2,1,'2025-10-12 23:33:24','2025-10-12 23:33:24','<!-- wp:paragraph -->\n<p>This is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>Hi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like pi&#241;a coladas. (And gettin\' caught in the rain.)</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:paragraph -->\n<p>...or something like this:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><p>The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.</p></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:paragraph -->\n<p>As a new WordPress user, you should go to <a href=\"https://rndpolicy.org/aidev/wp-admin/\">your dashboard</a> to delete this page and create new pages for your content. Have fun!</p>\n<!-- /wp:paragraph -->','Sample Page','','publish','closed','open','','sample-page','','','2025-10-12 23:33:24','2025-10-12 23:33:24','',0,'https://rndpolicy.org/aidev/?page_id=2',0,'page','',0),
(3,1,'2025-10-12 23:33:24','2025-10-12 23:33:24','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Who we are</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>Our website address is: https://rndpolicy.org/aidev.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Comments</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor&#8217;s IP address and browser user agent string to help spam detection.</p>\n<!-- /wp:paragraph -->\n<!-- wp:paragraph -->\n<p>An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Media</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Cookies</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.</p>\n<!-- /wp:paragraph -->\n<!-- wp:paragraph -->\n<p>If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.</p>\n<!-- /wp:paragraph -->\n<!-- wp:paragraph -->\n<p>When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select &quot;Remember Me&quot;, your login will persist for two weeks. If you log out of your account, the login cookies will be removed.</p>\n<!-- /wp:paragraph -->\n<!-- wp:paragraph -->\n<p>If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Embedded content from other websites</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.</p>\n<!-- /wp:paragraph -->\n<!-- wp:paragraph -->\n<p>These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Who we share your data with</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>If you request a password reset, your IP address will be included in the reset email.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">How long we retain your data</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.</p>\n<!-- /wp:paragraph -->\n<!-- wp:paragraph -->\n<p>For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">What rights you have over your data</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.</p>\n<!-- /wp:paragraph -->\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Where your data is sent</h2>\n<!-- /wp:heading -->\n<!-- wp:paragraph -->\n<p><strong class=\"privacy-policy-tutorial\">Suggested text: </strong>Visitor comments may be checked through an automated spam detection service.</p>\n<!-- /wp:paragraph -->\n','Privacy Policy','','draft','closed','open','','privacy-policy','','','2025-10-12 23:33:24','2025-10-12 23:33:24','',0,'https://rndpolicy.org/aidev/?page_id=3',0,'page','',0),
(4,0,'2025-10-12 23:33:24','2025-10-12 23:33:24','<!-- wp:page-list /-->','Navigation','','publish','closed','closed','','navigation','','','2025-10-12 23:33:24','2025-10-12 23:33:24','',0,'https://rndpolicy.org/aidev/2025/10/12/navigation/',0,'wp_navigation','',0),
(6,1,'2025-10-13 08:38:22','2025-10-12 23:38:22','<!-- wp:paragraph -->\n<p>This is a community-driven blog site!<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>welcome to AI app development community.</p>\n<!-- /wp:paragraph -->','hello','','publish','open','open','','hello','','','2025-10-13 08:38:22','2025-10-12 23:38:22','',0,'https://rndpolicy.org/aidev/?p=6',0,'post','',0),
(7,1,'2025-10-13 08:37:17','2025-10-12 23:37:17','{\"version\": 3, \"isGlobalStylesUserThemeJSON\": true }','Custom Styles','','publish','closed','closed','','wp-global-styles-twentytwentyfive','','','2025-10-13 08:37:17','2025-10-12 23:37:17','',0,'https://rndpolicy.org/aidev/wp-global-styles-twentytwentyfive/',0,'wp_global_styles','',0),
(8,1,'2025-10-13 08:38:22','2025-10-12 23:38:22','<!-- wp:paragraph -->\n<p>This is a community-driven blog site!<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>welcome to AI app development community.</p>\n<!-- /wp:paragraph -->','hello','','inherit','closed','closed','','6-revision-v1','','','2025-10-13 08:38:22','2025-10-12 23:38:22','',6,'https://rndpolicy.org/aidev/?p=8',0,'revision','',0),
(9,1,'2025-10-13 13:41:16','2025-10-13 04:41:16','<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">워크스테이션에 Ubuntu 24.04 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>인공지능 개발 플랫폼 및 툴 등은 <a href=\"http://192.168.101.245/docs/%eb%a6%ac%eb%88%85%ec%8a%a4-linux%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80/\">리눅스 (Linux)</a> 계열인 Ubuntu에서 쉽게 설치하여 서버로 운영하기에 장점이 많기 때문에, 이 매뉴얼은 <a href=\"http://192.168.101.245/docs/%ec%98%a4%ed%94%88-%ec%86%8c%ec%8a%a4-%ec%86%8c%ed%94%84%ed%8a%b8%ec%9b%a8%ec%96%b4-open-source-software-oss%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80/\">오픈 소스 소프트웨어 (Open Source Software, OSS)</a>인 Ubuntu를 설치하고 Ubuntu 상에 AI 앱 개발 플랫폼과 툴 등을 설치하는 과정을 설명합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/%ec%9b%8c%ed%81%ac%ec%8a%a4%ed%85%8c%ec%9d%b4%ec%85%98pc%ec%97%90-ubuntu-24-04-%ec%84%a4%ec%b9%98-%eb%b0%a9%eb%b2%95/\">워크스테이션(PC)에 Ubuntu 24.04 설치 방법</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>워크스테이션은 실제 운용하여 서비스를 제공해야 하기 때문에, 실습은 각자 개인 노트북 등에서 USB로 Ubuntu를 설치하여 진행합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/%ec%99%b8%ec%9e%a5%ed%98%95-usb%ec%97%90-ubuntu-24-04-%ec%84%a4%ec%b9%98/\">외장형 USB에 Ubuntu 24.04 설치</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ubutu에서 사용하는 기본 명령어는 아래를 참조해 주세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/ubuntu-%ec%97%90%ec%84%9c-%ec%82%ac%ec%9a%a9%ed%95%a0-%ea%b8%b0%eb%b3%b8-%eb%aa%85%eb%a0%b9%ec%96%b4/\">Ubuntu 에서 사용할 기본 명령어</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">워크스테이션에 GPU를 사용할 수 있는 드라이버 등 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/nvidia-gpu-%ec%84%b8%ed%8c%85/\">NVIDIA- GPU 세팅</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Docker 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있도록 하는 개방형 플랫폼입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://rndpolicy.org/aidev/docs/docker-%ec%84%a4%ec%b9%98-%eb%b0%8f-%ed%99%9c%ec%9a%a9/\" data-type=\"docs\" data-id=\"18\">Docker 설치 및 활용</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Ollama 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ollama는 다양한 오픈소스 대규모 언어 모델(LLM)을 개인 컴퓨터에서 쉽게 실행할 수 있도록 지원하는 도구입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/ollama-%ec%84%a4%ec%b9%98-%eb%b0%8f-%ec%9a%b4%ec%9a%a9/\">Ollama 설치 및 운용</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Openweb UI 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>OpenWebUI는 Ollama로 실행되는 로컬 LLM과 상호작용할 수 있는 웹 기반의 사용자 친화적인 인터페이스를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/openwebui-%ec%84%a4%ec%b9%98-%eb%b0%8f-%ec%9a%b4%ec%9a%a9/\">OpenWebui 설치 및 운용</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Dify 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Dify는 LLM을 활용한 다양한 AI 애플리케이션(챗봇, RAG 시스템 등)을 개발하고 배포할 수 있는 플랫폼입니다.&nbsp;</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/dify-%ec%84%a4%ec%b9%98/\">Dify 설치</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">gpt-researcher 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 웹 및 로컬 환경에서 심층적인 연구를 수행하도록 설계된 오픈 소스 AI 에이전트입니다. 그 주된 목적은 상세하고 사실적이며 편향되지 않은 연구 보고서를 인용과 함께 생성하는 것입니다. 이 에이전트는 광범위한 사용자 정의 옵션을 제공하여, 사용자가 특정 도메인에 맞춤화된 연구 에이전트를 생성할 수 있도록 지원합니다</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"http://192.168.101.245/docs/gpt-researcher-%ec%84%a4%ec%b9%98/\">GPT-Researcher 설치</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">image 생성 AI</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','매뉴얼','','publish','open','closed','','%eb%a7%a4%eb%89%b4%ec%96%bc','','','2025-10-25 13:07:32','2025-10-25 04:07:32','',0,'http://kbsi',0,'docs','',0),
(10,1,'2025-10-13 13:41:16','2025-10-13 04:41:16','<!-- wp:paragraph -->\n<p>Ubuntu 24.04 및 Nvidia A100 환경에서 NVIDIA 드라이버, CUDA 12.9 및 AI 환경 설정 종합 가이드</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Nvidia A100 그래픽 카드가 장착된 Ubuntu 24.04 워크스테이션에 NVIDIA 드라이버 및 CUDA Toolkit 12.9를 설치하는 체계적인 가이드를 제공합니다. 또한 GPU 가속 워크로드를 위한 Docker 구성 방법을 자세히 설명하고 NVIDIA Inference Microservices (NIM)를 소개합니다. 이 설정은 고급 AI 코딩 및 개발의 기초가 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">I. 도입</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>인공 지능(AI) 및 머신 러닝(ML) 개발 환경은 강력한 하드웨어와 세심하게 구성된 소프트웨어 스택을 필요로 합니다. NVIDIA Nvidia A100 그래픽 카드는 48GB GDDR6 ECC 메모리와 18,176개의 CUDA 코어를 통해 AI, 렌더링 및 고성능 컴퓨팅 작업에 탁월한 성능을 제공합니다. Ubuntu 24.04 LTS는 이러한 까다로운 워크로드를 위한 안정적이고 널리 채택된 플랫폼 역할을 합니다. 이 가이드는 NVIDIA 드라이버, CUDA Toolkit 버전 12.9 및 필요한 cuDNN 라이브러리를 올바르게 설치하여 안정적인 AI 개발 환경을 구축하는 데 중점을 둡니다. 또한 Docker 컨테이너 내에서 GPU 가속을 활용하는 일반적인 요구 사항을 해결하고 NVIDIA NIM을 사용하여 모델을 배포하는 초기 단계를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>여기에 설명된 절차는 호환성을 보장하고 최신 안정 소프트웨어 버전에 대한 액세스를 위해 공식 NVIDIA 리포지토리를 사용하는 것을 우선시합니다. 각 주요 설치 단계에는 각 구성 요소의 성공적인 설정을 확인하기 위한 검증 절차가 함께 제공됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">II. 시스템 요구 사항 및 초기 점검</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>설치 프로세스를 시작하기 전에 시스템이 필요한 하드웨어 및 소프트웨어 요구 사항을 충족하고 기존 환경이 준비되었는지 확인하는 것이 중요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">A. 하드웨어 요구 사항</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">B. 소프트웨어 요구 사항</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>운영 체제:</strong> Ubuntu 24.04 LTS (Noble Numbat) x86_64. Nvidia A100 는 Ubuntu 24.04 LTS에서 테스트되었습니다. CUDA 12.9도 Ubuntu 24.04를 지원합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>커널 헤더:</strong> 드라이버 설치에 필요합니다. 현재 실행 중인 커널과 일치해야 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>gcc 컴파일러:</strong> CUDA 샘플 및 애플리케이션 컴파일에 필요합니다. Ubuntu 24.04에는 일반적으로 호환되는 버전이 포함되어 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Secure Boot:</strong> 시스템의 UEFI/BIOS에서 Secure Boot가 활성화된 경우 드라이버 설치 중에 추가 단계(MOK 등록)가 필요합니다. 설치 프로세스를 위해 Secure Boot를 일시적으로 비활성화하는 것이 더 간단한 경우가 많지만, 일부 가이드에서는 키 등록 방법을 제안합니다. 이 가이드는 Secure Boot가 활성화되어 있을 수 있다고 가정하며 MOK 등록이 요청될 수 있는 시점을 명시합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">C. 설치 전 시스템 점검 및 업데이트</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>GPU 감지 확인:</strong> 시스템이 Nvidia A100 를 인식하는지 확인합니다<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>lspci | grep -i nvidia</code> </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>출력에 NVIDIA 그래픽 카드가 표시되어야 합니다. 그렇지 않은 경우 물리적 설치 및 BIOS 설정을 확인하십시오. Nvidia A100의 장치 ID가 출력에 나타날 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>시스템 패키지 업데이트:</strong> 최신 상태의 시스템으로 시작하는 것이 좋습니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo apt update sudo apt upgrade -y</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>커널 헤더 및 개발 도구 설치:</strong> 이는 드라이버 설치 중 커널 모듈 빌드에 필수적입니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo apt install linux-headers-$(uname -r) build-essential</code> <code>build-essential</code> </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>패키지에는 <code>gcc</code>, <code>g++</code>, <code>make</code> 및 기타 필요한 도구가 포함되어 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>충돌하는 드라이버 처리 (Nouveau):</strong> 오픈 소스 Nouveau 드라이버는 NVIDIA의 독점 드라이버와 충돌할 수 있습니다. 블랙리스트에 추가하는 것이 종종 권장됩니다. 최신 NVIDIA 설치 프로그램이 이를 처리하지만 명시적인 블랙리스트 추가는 문제를 예방할 수 있습니다. <code>/etc/modprobe.d/blacklist-nouveau.conf</code> 파일을 만듭니다: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo nano /etc/modprobe.d/blacklist-nouveau.conf</code> </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>다음 줄을 추가합니다: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>blacklist nouveau options nouveau modeset=0</code> </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>파일을 저장한 다음 initramfs를 업데이트하고 재부팅합니다: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo update-initramfs -u </code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>sudo reboot</code> </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>재부팅 후 드라이버 설치를 진행합니다. 이 단계는 NVIDIA 독점 드라이버를 위한 더 깨끗한 환경을 보장하여 설치 실패 또는 불안정한 그래픽 환경으로 이어질 수 있는 잠재적인 충돌을 최소화하는 데 도움이 됩니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">III. Ubuntu 24.04에서 Nvidia A100 용 NVIDIA 드라이버 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>올바른 NVIDIA 드라이버를 설치하는 것은 AI 워크로드를 위해 Nvidia A100 을 활용하기 위한 기본 단계입니다. 권장되는 방법은 공식 NVIDIA CUDA 네트워크 리포지토리를 사용하는 것입니다. 이는 드라이버와 CUDA Toolkit 간의 최적의 호환성을 보장하기 때문입니다. 이 접근 방식은 NVIDIA가 소프트웨어 스택을 위해 이러한 리포지토리를 관리하므로 일반적인 Ubuntu 드라이버나 타사 PPA를 사용하는 것보다 전문 AI/ML 개발에 일반적으로 더 강력합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">A. NVIDIA CUDA 네트워크 리포지토리 구성</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>NVIDIA CUDA 리포지토리는 드라이버, CUDA Toolkit 및 기타 관련 소프트웨어에 대한 액세스를 제공합니다. Ubuntu 24.04의 경우 리포지토리를 다음과 같이 구성해야 합니다. 이 명령은 네트워크 리포지토리 설정에 대한 NVIDIA 문서에 제공된 구조를 기반으로 하며 Ubuntu 24.04에 맞게 조정되었으며, 전용 패키지 목록이 있는 것으로 확인되었습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>NVIDIA CUDA 리포지토리 키 및 리포지토리 소스 추가:</strong><code>cuda-keyring</code> 패키지는 NVIDIA 패키지 서명에 사용되는 GPG 키를 설치하여 패키지의 신뢰성을 보장합니다. Bash 이 시퀀스는 먼저 키링 패키지를 다운로드하고 <code>dpkg</code>를 사용하여 설치한 다음(NVIDIA GPG 키 등록) 새로 추가된 NVIDIA 리포지토리의 패키지를 포함하도록 로컬 <code>apt</code> 패키지 목록을 업데이트합니다. `# cuda-keyring 패키지 다운로드 및 설치 참고: 정확한 URL은 변경될 수 있습니다. 항상 Ubuntu 24.04용 최신 NVIDIA CUDA 다운로드 페이지를 참조하십시오. 다음 구조가 일반적입니다: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>wget <a href=\"https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb\">https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb</a> sudo dpkg -i cuda-keyring_1.1-1_all.deb </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>sudo apt-get update </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>다운로드한 deb 파일 정리 <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>rm cuda-keyring_1.1-1_all.deb`</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">B. NVIDIA 드라이버 설치</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>리포지토리가 구성되면 NVIDIA 드라이버를 설치할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>cuda-drivers</code> 메타 패키지 설치:</strong> 이 메타 패키지는 리포지토리에서 사용 가능한 CUDA 브랜치와 호환되는 최신 적절한 드라이버 시리즈를 설치하도록 설계되었습니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo apt-get install cuda-drivers</code> </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>NVIDIA NIM 문서는 최적의 성능을 위해 드라이버 버전 550 이상을 권장합니다. CUDA 12.x 리포지토리 브랜치의 <code>cuda-drivers</code> 패키지는 적합한 버전을 제공해야 합니다. NVIDIA의 오픈 커널 모듈을 사용하는 드라이버 버전 560.35.03으로 Nvidia A100를 사용하여 Ubuntu 24.04에서 테스트한 내용이 언급되었습니다. <code>cuda-drivers</code> 패키지는 종종 설치 중에 옵션을 제공하거나 감지된 하드웨어에 대해 독점 또는 오픈 커널 모듈을 모두 사용할 수 있는 경우 둘 중 하나를 사용하도록 구성할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>시스템 재부팅:</strong> 새 커널 모듈이 로드되고 드라이버가 활성화되려면 재부팅이 필요합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo reboot</code> </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Secure Boot 참고:</strong> Secure Boot가 활성화된 경우 시스템은 재부팅 프로세스 중에 MOK(Machine Owner Key) 등록을 요청할 가능성이 높습니다. 화면의 지시에 따라 NVIDIA 드라이버용 키를 등록하십시오. 여기에는 일반적으로 \"Enroll MOK\"를 선택하고 확인한 다음 드라이버 사전 설치 단계(DKMS에서 요청한 경우)에서 설정한 암호를 입력하는 과정이 포함됩니다. MOK를 등록하지 않으면 NVIDIA 드라이버가 로드되지 않습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">C. 드라이버 설치 확인</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>시스템이 재부팅된 후 NVIDIA 드라이버가 올바르게 설치되었고 Nvidia A100 이 인식되는지 확인합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>nvidia-smi</code> 실행:</strong> 이 명령줄 유틸리티는 설치된 NVIDIA 드라이버 및 GPU에 대한 정보를 제공합니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>nvidia-smi</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>성공적인 출력은 다음을 표시합니다: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>드라이버 버전:</strong> 설치된 NVIDIA 드라이버의 버전입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>CUDA 버전:</strong> 설치된 드라이버에서 지원하는 <em>최대 CUDA 버전</em>을 나타냅니다. 이는 아직 시스템에 설치된 CUDA Toolkit의 버전이 아니라 드라이버의 호환성 수준이라는 점을 이해하는 것이 중요합니다. 실제 CUDA Toolkit은 별도의 설치입니다. 사용자가 이 값을 활성 툴킷 버전으로 잘못 해석하는 경우가 많으므로 이 구분이 중요합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>GPU 이름:</strong> \"Nvidia A100\"이 표시되어야 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>GPU 메모리:</strong> 총 메모리, 할당된 메모리 및 사용 가능한 메모리 (예: Nvidia A100의 경우 총 48GB).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>GPU 사용률, 온도 및 실행 중인 프로세스(있는 경우)와 같은 기타 세부 정보.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>다음 표는 드라이버 설치 명령을 요약한 것입니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>단계</th><th>명령</th><th>예상 결과/참고</th></tr></thead><tbody><tr><td>1. NVIDIA 리포지토리 키 및 소스 추가</td><td><code>wget &lt;https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb</code>&gt; &lt;br&gt; <code>sudo dpkg -i cuda-keyring_1.1-1_all.deb</code> &lt;br&gt; <code>sudo apt-get update</code> &lt;br&gt; <code>rm cuda-keyring_1.1-1_all.deb</code></td><td><code>apt</code> 소스가 NVIDIA 리포지토리로 업데이트되었습니다.</td></tr><tr><td>2. NVIDIA 드라이버 설치</td><td><code>sudo apt-get install cuda-drivers</code></td><td>리포지토리에서 최신 호환 NVIDIA 드라이버가 설치되었습니다.</td></tr><tr><td>3. 시스템 재부팅</td><td><code>sudo reboot</code></td><td>시스템이 재부팅됩니다. Secure Boot가 활성화된 경우 MOK 등록이 필요할 수 있습니다.</td></tr><tr><td>4. 드라이버 설치 확인</td><td><code>nvidia-smi</code></td><td>드라이버 버전, CUDA 호환성 버전 및 RTX 6000 Ada GPU 세부 정보를 표시합니다. 드라이버가 로드되어 작동하는지 확인합니다.</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><code>nvidia-smi</code>가 실패하거나 GPU를 표시하지 않으면 문제 해결 섹션을 참조하십시오.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">IV. Ubuntu 24.04에 CUDA Toolkit 12.9 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>NVIDIA 드라이버가 올바르게 설치되고 확인되면 다음 단계는 CUDA Toolkit 버전 12.9를 설치하는 것입니다. CUDA Toolkit은 컴파일러, 라이브러리 및 도구를 포함하여 GPU 가속 애플리케이션을 만들기 위한 개발 환경을 제공합니다. 이전 섹션에서 구성한 NVIDIA 네트워크 리포지토리가 이 설치에 사용되며, Ubuntu 24.04 및 CUDA 12.9용 패키지를 특별히 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">A. CUDA Toolkit 12.9 설치</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>CUDA Toolkit 패키지 설치:</strong> 개발 환경의 예측 가능성을 보장하기 위해 특정 버전의 CUDA Toolkit을 설치하는 것이 좋습니다. <code>cuda-toolkit-12-9</code> 패키지(또는 <code>cuda-12-9</code>와 유사한 이름의 메타 패키지)는 12.9 버전을 대상으로 합니다. 명시적인 버전을 사용하는 것이 일반적인 <code>sudo apt-get install cuda</code>보다 선호됩니다. 후자는 리포지토리 기본값이 변경될 경우 다른 버전을 설치할 수 있기 때문입니다. Bash 이 명령은 컴파일러(<code>nvcc</code>), 라이브러리 및 헤더를 포함한 CUDA Toolkit 12.9를 다운로드하고 설치합니다. Ubuntu 24.04 x86_64용 NVIDIA 리포지토리에는 CUDA 12.9용 특정 패키지가 나열되어 있어 이 방법을 통해 사용 가능함을 확인합니다. Ubuntu 24.04 기반 컨테이너에 NVIDIA CUDA 12.9.0이 존재한다는 점도 간접적인 지원을 나타냅니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo apt-get install cuda-toolkit-12-9</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">B. 환경 변수 설정 (설치 후 필수)</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>시스템 및 개발 도구가 CUDA Toolkit 바이너리 및 라이브러리를 찾을 수 있도록 <code>PATH</code> 및 <code>LD_LIBRARY_PATH</code> 환경 변수를 업데이트해야 합니다. 이러한 변경 사항은 일반적으로 지속성을 위해 사용자의 <code>~/.bashrc</code> 파일에 추가됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>~/.bashrc</code>에 CUDA 경로 추가</strong>: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>echo \'export PATH=/usr/local/cuda-12.9/bin${PATH:+:${PATH}}\' &gt;&gt; ~/.bashrc echo \'export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}\' &gt;&gt; ~/.bashrc</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>현재 셸 세션에 변경 사항 적용: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>source ~/.bashrc</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>환경 변수 확인:</strong> 경로가 올바르게 추가되었는지 확인합니다: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>출력에는 <code>PATH</code>에 <code>/usr/local/cuda-12.9/bin</code>이, <code>LD_LIBRARY_PATH</code>에 <code>/usr/local/cuda-12.9/lib64</code>가 표시되어야 합니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>echo $PATH echo $LD_LIBRARY_PATH</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">C. CUDA Toolkit 설치 확인</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>철저한 확인을 통해 툴킷이 올바르게 설치되었고 GPU와 통신할 수 있는지 확인합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>nvcc</code> 버전 확인:</strong> NVIDIA CUDA 컴파일러(<code>nvcc</code>)는 툴킷의 핵심 구성 요소입니다. 해당 버전은 설치된 툴킷과 일치해야 합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>nvcc --version</code> 출력에는 \"Cuda compilation tools, release 12.9\"를 포함한 <code>nvcc</code>에 대한 정보가 표시되어야 합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>CUDA 샘플 컴파일 및 실행: &lt;이 부분은 실패&gt;</strong> NVIDIA는 툴킷의 기능을 테스트하기 위한 CUDA 샘플을 제공합니다. 이러한 샘플은 이제 GitHub에서 호스팅되며 일반적으로 툴킷 패키지와 함께 기본적으로 설치되지 않습니다.<ul><li>CUDA 샘플 리포지토리 복제:</li></ul><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><ul><li><code>git</code>이 설치되어 있지 않으면 <code>sudo apt install git</code> 으로 설치합니다. </li></ul></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li><code>git clone &lt;https://github.com/NVIDIA/cuda-samples.git&gt; </code></li></ul></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li><code>cd cuda-samples</code><strong><code>deviceQuery</code> </strong></li></ul></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li><strong>빌드 및 실행:</strong><code>deviceQuery</code> 샘플은 CUDA 지원 장치와 해당 속성을 열거합니다.  </li></ul><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><ul><li><code>cd Samples/1_Utilities/deviceQuery </code></li></ul></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li><code>make</code></li></ul>./deviceQuery <code>성공적으로 실행되면 Nvidia A100에 대한 자세한 정보가 표시되고 `Result = PASS`로 끝납니다. 이는 CUDA 런타임이 GPU를 올바르게 식별하고 상호 작용할 수 있음을 확인합니다. 샘플이 GitHub로 마이그레이션됨에 따라 개발자는 이제 이러한 예제를 적극적으로 가져와야 하며, 이는 샘플이 종종 로컬 설치 경로에 포함되었던 이전 CUDA Toolkit 배포판과 달라진 점입니다.</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>다음 표는 CUDA Toolkit 12.9 설치 및 확인 단계를 간략하게 설명합니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>단계</th><th>명령</th><th>목적/예상 결과</th></tr></thead><tbody><tr><td>1. CUDA Toolkit 12.9 설치</td><td><code>sudo apt-get install cuda-toolkit-12-9</code></td><td>CUDA Toolkit 12.9 (컴파일러, 라이브러리, 헤더) 설치됨.</td></tr><tr><td>2. 환경 변수 설정</td><td><code>echo \'export PATH=/usr/local/cuda-12.9/bin${PATH:+:${PATH}}\' &gt;&gt; ~/.bashrc</code> &lt;br&gt; <code>echo \'export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}\' &gt;&gt; ~/.bashrc</code> &lt;br&gt; <code>source ~/.bashrc</code></td><td><code>PATH</code> 및 <code>LD_LIBRARY_PATH</code>가 CUDA 12.9 디렉터리를 포함하도록 업데이트됨.</td></tr><tr><td>3. <code>nvcc</code> 버전 확인</td><td><code>nvcc --version</code></td><td>CUDA Toolkit 버전 표시, 12.9인지 확인.</td></tr><tr><td>4. <code>deviceQuery</code> 샘플 컴파일 및 실행</td><td><code>git clone &lt;https://github.com/NVIDIA/cuda-samples.git</code>&gt;</td><td></td></tr><tr><td><code>cd cuda-samples/Samples/1_Utilities/deviceQuery</code> &lt;br&gt;</td><td></td><td></td></tr><tr><td><code>make</code> &lt;br&gt; <code>./deviceQuery</code></td><td><code>deviceQuery</code>가 성공적으로 컴파일 및 실행되어 Nvidia A100 세부 정보와 <code>Result = PASS</code>를 표시함. 툴킷 기능 및 GPU 통신 확인.</td><td></td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">V. CUDA 12.9용 cuDNN 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>NVIDIA CUDA Deep Neural Network 라이브러리(cuDNN)는 심층 신경망을 위한 GPU 가속 기본 요소 라이브러리입니다. 딥 러닝 프레임워크에서 고성능을 달성하는 데 필수적입니다. Ubuntu 24.04의 CUDA 12.9용 cuDNN은 드라이버 및 CUDA Toolkit에 사용된 것과 동일한 NVIDIA 네트워크 리포지토리에서 설치해야 합니다. 이 방법은 호환성을 보장하고 수동 tarball 방법에 비해 설치를 단순화합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">A. cuDNN 라이브러리 설치</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ubuntu 24.04 x86_64용 NVIDIA 리포지토리에는 CUDA 12.9용 특정 빌드를 포함하여 CUDA 12.x와 호환되는 cuDNN 9 패키지가 포함되어 있습니다. 설치에는 런타임 및 개발자 패키지를 가져오는 과정이 포함됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>cuDNN 런타임 및 개발자 라이브러리 설치:</strong> cuDNN의 패키지 이름은 특정할 수 있습니다. 의 목록(예: <code>cudnn9-cuda-12-9_9.10.1.4-1_amd64.deb</code>, <code>libcudnn9-cuda-12_9.10.1.4-1_amd64.deb</code>, <code>libcudnn9-dev-cuda-12_9.10.1.4-1_amd64.deb</code>) 및 일반적인 cuDNN 설치 패턴을 기반으로 다음 명령은 CUDA 12.x용 cuDNN 9를 대상으로 합니다. 설치된 CUDA 버전에 해당하는 메타 패키지를 사용하는 것이 가장 좋습니다. CUDA 12.x의 경우 일반적으로 <code>sudo apt-get -y install cudnn9-cuda-12</code> 명령이 제안됩니다. CUDA 12.9가 설치되어 있으므로 <code>apt</code>는 올바른 종속성을 해결해야 합니다. <code>cudnn9-cuda-12-9</code>와 같은 더 구체적인 메타 패키지를 사용할 수 있고 NVIDIA에서 이 목적을 위해 명확하게 문서화한 경우 더욱 정확할 것입니다.  </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>cuDNN 설치에 <code>apt</code>를 사용하는 것은 수동 방법보다 강력하게 권장됩니다. <code>apt</code>는 파일 배치, 권한 및 종속성을 올바르게 처리하여 더 강력하고 유지 관리 가능한 시스템을 만들기 때문입니다. 사용자가 CUDA 12.8용 cuDNN을 설치하려고 할 때 종속성으로 인해 12.9 패키지가 선호되었던 에서 암시된 버전 불일치와 같은 잠재적인 문제는 설치된 CUDA 12.9에 대한 올바른 메타 패키지를 대상으로 하여 완화됩니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>`# 최신 cuDNN 버전을 볼 수 있도록 패키지 목록 업데이트 <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>sudo apt-get update </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>CUDA 12.x용 cuDNN 9 런타임 라이브러리 설치 <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>sudo apt-get install libcudnn9-cuda-12 </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>CUDA 12.x용 cuDNN 9 개발자 라이브러리 설치 (헤더 포함) <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>sudo apt-get install libcudnn9-dev-cuda-12`</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">B. cuDNN 설치 확인</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>확인을 통해 cuDNN 라이브러리가 올바르게 설치되고 액세스 가능한지 확인합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>설치된 패키지 및 라이브러리/헤더 파일 확인:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>설치된 cuDNN 패키지 나열: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>libcudnn9</code> 및 <code>libcudnn9-dev</code>와 같은 패키지가 표시되어야 합니다. </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>dpkg -l | grep libcudnn</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>헤더 파일 존재 및 버전 확인 (경로는 패키지 세부 정보에 따라 약간 다를 수 있지만 일반적으로 표준 포함 디렉터리에 있음): 기본 헤더 <code>cudnn_version.h</code>에는 버전 매크로가 포함되어 있습니다. <code>apt</code> 설치 후 일반적인 위치는 <code>/usr/include/x86_64-linux-gnu/</code> 내입니다. </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>이는 cuDNN 애플리케이션 컴파일에 필요한 헤더 파일이 있는지 확인하고 설치된 cuDNN 버전을 검사할 수 있도록 합니다. </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>`# 버전 헤더 확인 <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>ls -l /usr/include/x86_64-linux-gnu/cudnn_version.h </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>CUDNN_MAJOR, CUDNN_MINOR, CUDNN_PATCHLEVEL 정의를 보려면 내용 표시 <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>cat /usr/include/x86_64-linux-gnu/cudnn_version.h`</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>cuDNN 샘플 컴파일 및 실행 (mnistCUDNN):&lt;이 부분 실패&gt;</strong> NVIDIA는 리포지토리의 패키지를 통해 설치할 수 있는 cuDNN 샘플을 제공합니다.<ul><li><strong>cuDNN 샘플 설치:</strong><code>libcudnn9-samples</code> 패키지를 사용할 수 있습니다. </li></ul><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><ul><li><code>sudo apt-get install libcudnn9-samples</code><strong><code>mnistCUDNN</code> </strong></li></ul></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li><strong>컴파일 및 실행:</strong> 샘플은 일반적으로 <code>/usr/src/cudnn_samples_v9/</code> 또는 유사한 위치에 설치됩니다. 이전 가이드에서는 때때로 <code>$HOME/cudnn_samples_v9/</code>를 참조합니다. 패키지 버전의 위치를 사용해야 합니다. </li></ul></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li>`# mnistCUDNN 샘플 디렉터리로 이동 정확한 경로는 패키지 버전에 따라 다를 수 있으므로 /usr/src/ 확인 </li></ul><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><ul><li>cd /usr/src/cudnn_samples_v9/mnistCUDNN </li></ul></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li>샘플 컴파일 </li></ul><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><ul><li>sudo make clean &amp;&amp; sudo make </li></ul></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li>(빌드 아티팩트에 대해 /usr/src가 사용자 쓰기 가능하지 않은 경우 sudo가 필요할 수 있음) 또는 샘플 디렉터리를 사용자 쓰기 가능한 위치로 먼저 복사: </li></ul><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><ul><li>cp -r /usr/src/cudnn_samples_v9 ~/my_cudnn_samples </li></ul></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li>cd ~/my_cudnn_samples/mnistCUDNN </li></ul></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li>make clean &amp;&amp; make </li></ul></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><ul><li>샘플 실행`</li></ul>./mnistCUDNN </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>성공적으로 실행되면 일반적으로 `Test passed!`가 인쇄됩니다. 이는 cuDNN이 설치된 CUDA Toolkit 및 GPU와 올바르게 작동하는지 종합적으로 확인합니다.</code></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>다음 표는 네트워크 리포지토리를 사용한 cuDNN 설치를 요약한 것입니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>단계</th><th>명령</th><th>목적</th></tr></thead><tbody><tr><td>1. 패키지 목록 업데이트</td><td><code>sudo apt-get update</code></td><td>로컬 패키지 인덱스 새로 고침.</td></tr><tr><td>2. cuDNN 런타임 설치</td><td><code>sudo apt-get install libcudnn9-cuda-12</code></td><td>CUDA 12.x와 호환되는 cuDNN 9 런타임 라이브러리를 설치합니다.</td></tr><tr><td>3. cuDNN 개발자 패키지 설치</td><td><code>sudo apt-get install libcudnn9-dev-cuda-12</code></td><td>CUDA 12.x용 cuDNN 9 헤더 파일 및 개발 라이브러리를 설치합니다.</td></tr><tr><td>4. (선택 사항) cuDNN 샘플 설치</td><td><code>sudo apt-get install libcudnn9-samples</code></td><td>cuDNN 샘플 코드를 설치합니다.</td></tr><tr><td>5. 설치 확인</td><td>`dpkg -l \\</td><td>grep libcudnn<code>&lt;br&gt;</code>cat /usr/include/x86_64-linux-gnu/cudnn_version.h<code>&lt;br&gt; (샘플이 설치된 경우)</code>cd /usr/src/cudnn_samples_v9/mnistCUDNN &amp;&amp; make &amp;&amp;./mnistCUDNN`</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">VI. GPU 가속을 위한 Docker 설정</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker 컨테이너는 휴대 가능하고 재현 가능한 환경을 만들기 위해 AI 개발에 널리 사용됩니다. Docker 컨테이너가 Nvidia A100 GPU에 액세스할 수 있도록 하려면 NVIDIA Container Toolkit을 설치하고 Docker를 올바르게 구성해야 합니다. 이 툴킷은 이전의 <code>nvidia-docker2</code>를 대체하고 보다 모듈화된 접근 방식을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">A. Docker Engine 설치</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker가 아직 설치되어 있지 않으면 공식 Docker 설명서를 따르십시오. Ubuntu에서의 일반적인 설치는 다음과 같습니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Docker의 <code>apt</code> 리포지토리 설정 (공식 Docker CE에 대해 아직 수행하지 않은 경우):</strong> 가장 최신 명령은 <a href=\"https://docs.docker.com/engine/install/ubuntu/%EB%A5%BC\">https://docs.docker.com/engine/install/ubuntu/를</a> 참조하십시오. 여기에는 일반적으로 Docker의 GPG 키와 리포지토리를 추가하는 과정이 포함됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker Engine 설치</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>**루트가 아닌 사용자로 Docker 관리 (권장):**Bash 그런 다음 로그아웃했다가 다시 로그인하거나 현재 터미널 세션에서 <code>newgrp docker</code>를 실행하여 그룹 변경 사항을 적용합니다. 이렇게 하면 <code>sudo</code> 없이 <code>docker</code> 명령을 실행할 수 있습니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>sudo groupadd docker </code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code># 그룹이 아직 존재하지 않는 경우 </code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>sudo usermod -aG docker $USER</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">B. NVIDIA Container Toolkit 설치</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>NVIDIA Container Toolkit은 Docker가 NVIDIA GPU와 상호 작용하는 데 필요한 구성 요소를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>NVIDIA Container Toolkit 리포지토리 구성:</strong> 다음 명령은 NVIDIA Container Toolkit용 GPG 키와 리포지토리를 추가합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\ncurl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \\\n    sed \'s#deb https://#deb &#91;signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g\' | \\\n    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>툴킷 패키지 설치</strong>:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code><code>sudo apt-get update </code>\n<code>sudo apt-get install -y nvidia-container-toolkit</code></code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">C. NVIDIA 런타임을 사용하도록 Docker 구성</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker 데몬은 NVIDIA 런타임을 인식하도록 구성해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><code>nvidia-ctk</code>를 사용하여 Docker 구성:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><code>nvidia-ctk</code>(NVIDIA Container Toolkit CLI) 유틸리티는 Docker의 <code>daemon.json</code> 파일을 수정합니다. </p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code><code>sudo nvidia-ctk runtime configure --runtime=docker</code></code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p><strong>Docker 데몬 다시 시작:</strong> Docker 서비스를 다시 시작하여 구성 변경 사항을 적용합니다. </p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code><code>sudo systemctl restart docker</code></code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">D. Docker에서 GPU 액세스 확인</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker 컨테이너가 GPU에 액세스할 수 있는지 확인하려면 <code>nvidia-smi</code>를 실행하는 테스트 컨테이너를 실행합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>CUDA 기본 컨테이너 실행:</strong> 공식 NVIDIA CUDA 이미지를 사용합니다. CUDA 12.9 설정을 확인하려면 CUDA 12.9가 포함된 이미지가 이상적입니다. NVIDIA는 Docker Hub에 <code>nvidia/cuda</code> 이미지를 제공하고 보다 전문화된 컨테이너를 위해 <code>nvcr.io</code>를 제공합니다. 에서는 CUDA 12.9.0이 포함된 Ubuntu 24.04 기반 컨테이너를 언급하지만 Docker Hub에서 간단한 기본 이미지로 공개적으로 사용할 수 있는지 여부는 다를 수 있습니다. 일반적인 대체 방법은 Ubuntu 22.04와 같은 최신 Ubuntu LTS를 기반으로 하는 CUDA 12.9 이미지입니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-gpus all</code> 플래그는 Docker에 사용 가능한 모든 GPU를 컨테이너에 액세스할 수 있도록 지시합니다. 설정이 올바르면 이 명령은 지정된 이미지를 가져오고(아직 없는 경우) 컨테이너 내에서 <code>nvidia-smi</code>를 실행합니다. 출력은 호스트의 <code>nvidia-smi</code> 출력과 유사해야 하며 Nvidia A100 및 드라이버 세부 정보를 표시합니다. 이는 NVIDIA Container Toolkit이 올바르게 작동하고 GPU 리소스가 Docker 환경으로 전달되고 있음을 확인합니다. CUDA 12.9 라이브러리가 포함된 컨테이너를 사용하면 이 CUDA 버전에 맞게 빌드된 Docker 내 애플리케이션이 예상대로 작동할 수 있도록 더욱 보장됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>`# 사용 가능하고 알려진 경우 Ubuntu 24.04 기반 이미지로 시도 <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>sudo docker run --rm --gpus all <a href=\"http://nvcr.io/nvidia/cuda:12.9.0-base-ubuntu24.04\">nvcr.io/nvidia/cuda:12.9.0-base-ubuntu24.04</a> <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>nvidia-smi </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>그렇지 않으면 쉽게 사용할 수 있는 CUDA 12.9 이미지 사용: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>sudo docker run --rm --gpus all nvidia/cuda:12.9.0-base-ubuntu22.04 </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>nvidia-smi`</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>다음 표는 NVIDIA Container Toolkit 설치를 요약한 것입니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>단계</th><th>하위 단계</th><th>명령</th><th>참고</th></tr></thead><tbody><tr><td>1. Docker Engine 설치</td><td>1a. Docker 리포지토리 설정</td><td>(공식 Docker 문서 참조)</td><td>공식 Docker CE가 설치되었는지 확인합니다.</td></tr><tr><td></td><td>1b. Docker 패키지 설치</td><td><code>sudo apt-get update</code> <br><br><code>sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</code></td><td>Docker 구성 요소를 설치합니다.</td></tr><tr><td></td><td>1c. 사용자를 <code>docker</code> 그룹에 추가</td><td><code>sudo usermod -aG docker $USER</code> <br><code>newgrp docker</code> (또는 로그아웃/로그인)</td><td><code>sudo</code> 없이 Docker를 실행할 수 있도록 합니다.</td></tr><tr><td>2. NVIDIA Container Toolkit 설치</td><td>2a. 툴킷 리포지토리 구성</td><td>`curl -fsSL...</td><td>sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list` (전체 명령은 텍스트 참조)</td></tr><tr><td></td><td>2b. 툴킷 패키지 설치</td><td><code>sudo apt-get update</code> <br><br><code>sudo apt-get install -y nvidia-container-toolkit</code></td><td>툴킷을 설치합니다.</td></tr><tr><td>3. Docker 런타임 구성</td><td>3a. <code>nvidia-ctk</code>로 Docker 구성</td><td><code>sudo nvidia-ctk runtime configure --runtime=docker</code></td><td>NVIDIA 런타임을 사용하도록 Docker의 <code>daemon.json</code>을 업데이트합니다.</td></tr><tr><td></td><td>3b. Docker 서비스 다시 시작</td><td><code>sudo systemctl restart docker</code></td><td>런타임 구성 변경 사항을 적용합니다.</td></tr><tr><td>4. GPU 액세스 확인</td><td>4a. 테스트 컨테이너 실행</td><td><code>sudo docker run --rm --gpus all nvidia/cuda:12.9.0-base-ubuntu22.04 nvidia-smi</code></td><td>Docker 컨테이너 내에서 GPU에 액세스할 수 있는지 확인합니다. 출력에 Nvidia A100가 표시되어야 합니다.</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">VII. Nvidia NIM (NVIDIA Inference Microservices) 소개</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>NVIDIA Inference Microservices (NIM)는 AI 모델 배포를 단순화하여 확장 가능하고 프로덕션 준비가 된 마이크로서비스로 전환하도록 설계된 사전 빌드되고 최적화된 컨테이너입니다. NIM은 배포 복잡성 감소, 모델별 최적화를 통한 성능 향상, 손쉬운 통합을 위한 표준화된 API와 같은 이점을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">A. Nvidia NIM의 전제 조건</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>NIM을 배포하기 전에 다음 전제 조건이 충족되었는지 확인하십시오:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>NVIDIA GPU:</strong> 충분한 메모리가 있는 NVIDIA GPU가 필요합니다. Nvidia A100는 많은 NIM에 적합합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>운영 체제:</strong> 지원되는 Linux 배포판. <code>glibc &gt;= 2.35</code>가 포함된 Ubuntu 24.04는 호환됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>NVIDIA 드라이버:</strong> 섹션 III에서 완료한 대로 최신 NVIDIA 드라이버를 설치해야 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 및 NVIDIA Container Toolkit:</strong> 섹션 VI에 자세히 설명된 대로 설치하고 구성해야 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>NVIDIA AI Enterprise 라이선스:</strong> LLM 및 기타 모델용 NVIDIA NIM을 자체 호스팅하려면 일반적으로 NVIDIA AI Enterprise 라이선스가 필요합니다. 사용자는 라이선스 조건을 확인하고 사용 가능한 경우 평가판 옵션을 살펴보아야 합니다. 이는 기술적 설정 외에 중요한 고려 사항입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>NGC 계정 및 API 키:</strong> NIM 컨테이너 이미지를 가져오려면 NVIDIA의 NGC 카탈로그에 액세스해야 합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">B. NIM 설정 단계</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>NGC API 키 생성:</strong> NGC 컨테이너 레지스트리로 인증하려면 API 키가 필요합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>NGC 웹사이트(일반적으로 <code>https://org.ngc.nvidia.com/setup/api-keys</code> 또는 <code>https://org.ngc.nvidia.com/setup/personal-keys</code>)로 이동합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>새 API 키를 생성합니다. 키 권한에 대해 \"NGC Catalog\" 서비스(또는 이를 포함하는 더 넓은 범위)가 선택되었는지 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>생성된 API 키를 복사하여 안전하게 보관합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>API 키를 환경 변수로 내보내기:</strong> NIM 컨테이너는 이 환경 변수를 사용하여 모델 자산 다운로드를 위해 NGC로 인증합니다.Bash <code>export NGC_API_KEY=\"YOUR_API_KEY_HERE\"</code> <code>\"YOUR_API_KEY_HERE\"</code>를 실제 키로 바꿉니다. 프로덕션 환경의 보안을 위해 이 키를 관리하는 더 안전한 방법(예: Docker 시크릿 또는 버전 제어에 커밋되지 않은 환경 파일)을 고려하십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>NGC Docker 레지스트리에 로그인:</strong> API 키를 사용하여 NVIDIA의 컨테이너 레지스트리인 <code>nvcr.io</code>에 로그인합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>echo \"$NGC_API_KEY\" | sudo docker login nvcr.io --username \'$oauthtoken\' --password-stdin</code> </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>사용자 이름 <code>$oauthtoken</code>은 API 키가 인증에 사용되고 있음을 나타내는 특수 문자열입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">C. Nvidia NIM 실행</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>설정이 완료되면 NIM 컨테이너를 시작할 수 있습니다. 특정 모델 및 이미지 태그는 다를 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>실행할 NIM 식별 (선택 사항이지만 유익함):</strong> 사용 가능한 NIM은 NVIDIA API 카탈로그(<code>https://build.nvidia.com</code>)를 탐색하거나 NGC CLI 도구(설치된 경우)를 <code>ngc registry image list --format_type csv nvcr.io/nim/*</code>와 같은 명령으로 사용하여 찾을 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>예시: Llama 3 NIM 시작:</strong> 다음은 예시입니다. <code>MODEL_NIM_PATH</code> 및 <code>NIM_IMAGE_TAG</code>를 NGC 카탈로그에서 원하는 모델의 실제 경로 및 태그로 바꾸십시오.Bash `# 예시: NGC의 실제 모델 경로 및 태그로 바꾸십시오. export MODEL_NIM_PATH=\"meta/llama3-8b-instruct\" export NIM_IMAGE_TAG=\"1.0.0\" # 예시 태그, 최신 버전은 NGC 확인 export NIM_IMAGE_NAME=\"<a href=\"http://nvcr.io/nim/$%7BMODEL_NIM_PATH%7D:$%7BNIM_IMAGE_TAG%7D\">nvcr.io/nim/${MODEL_NIM_PATH}:${NIM_IMAGE_TAG}</a>\" export LOCAL_NIM_CACHE=\"$HOME/.cache/nim\" # 모델 아티팩트용 로컬 캐시 mkdir -p \"$LOCAL_NIM_CACHE\" export CONTAINER_NAME=\"nim_llama3_8b_instruct\" sudo docker run -it --rm --name ${CONTAINER_NAME} \\ --gpus all \\ --runtime=nvidia \\ -e NGC_API_KEY \\ -v \"${LOCAL_NIM_CACHE}:/opt/nim/.cache\" \\ -u $(id -u):$(id -g) \\ -p 8000:8000 \\ \"${NIM_IMAGE_NAME}\"` 주요 Docker 실행 매개변수 설명 :<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-gpus all</code>: 사용 가능한 모든 GPU를 컨테이너에 노출합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-runtime=nvidia</code>: NVIDIA 컨테이너 런타임을 지정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>e NGC_API_KEY</code>: 모델 다운로드를 위해 NGC API 키를 컨테이너에 전달합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>v \"${LOCAL_NIM_CACHE}:/opt/nim/.cache\"</code>: 다운로드한 모델 가중치 및 아티팩트용 캐시로 로컬 디렉터리를 마운트하여 후속 실행 시 재다운로드를 방지합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>u $(id -u):$(id -g)</code>: 마운트된 캐시와의 권한 문제를 방지하기 위해 현재 사용자의 ID 및 그룹 ID로 컨테이너를 실행합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>p 8000:8000</code>: 호스트의 포트 8000을 NIM 서비스가 일반적으로 수신 대기하는 컨테이너의 포트 8000에 매핑합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>${NIM_IMAGE_NAME}</code>: <code>nvcr.io</code>의 NIM 컨테이너 이미지 전체 이름 및 태그입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">D. NIM과 상호 작용</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>NIM 컨테이너가 실행되면 모델을 다운로드하고(아직 캐시되지 않은 경우) 추론 서버를 시작합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>서버 준비 대기:</strong> 컨테이너 로그(<code>sudo docker logs -f ${CONTAINER_NAME}</code>)에서 서버가 준비되었음을 나타내는 메시지(예: \"NIM server is ready\" 또는 유사 메시지)를 모니터링합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>**상태 엔드포인트 확인:**Bash 성공적인 응답(예: 상태 \"ready\"인 HTTP 200)은 서버가 작동 중임을 나타냅니다. <code>curl &lt;http://localhost:8000/v1/health/ready</code>&gt;</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>**NIM에서 제공하는 모델 나열:**Bash 그러면 이 특정 NIM 인스턴스에서 제공하는 모델이 표시됩니다. <code>curl &lt;http://localhost:8000/v1/models</code>&gt;</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>추론 요청 보내기:</strong> LLM NIM의 경우 API는 종종 OpenAI와 호환됩니다. 채팅 완료 모델 예시 : Bash 많은 LLM에 OpenAI 호환 API를 사용하면 개발자가 기존 클라이언트 라이브러리를 종종 활용할 수 있으므로 통합이 단순화됩니다. <code>curl -X POST &lt;http://localhost:8000/v1/chat/completions&gt; \\\\ -H \"Content-Type: application/json\" \\\\ -H \"Authorization: Bearer YOUR_NGC_API_KEY\" \\\\ -d \'{ \"model\": \"meta/llama3-8b-instruct\", // v1/models 출력의 모델 이름 사용 \"messages\":, \"temperature\": 0.7, \"max_tokens\": 100 }\'</code></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">E. NIM 컨테이너 중지</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><code>sudo docker stop ${CONTAINER_NAME}</code></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다음 표는 NVIDIA NIM의 주요 Docker 실행 매개변수를 강조 표시합니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>매개변수</th><th>예시 값</th><th>목적</th></tr></thead><tbody><tr><td><code>--gpus all</code></td><td><code>all</code></td><td>모든 호스트 GPU를 컨테이너에서 사용할 수 있도록 합니다.</td></tr><tr><td><code>--runtime=nvidia</code></td><td><code>nvidia</code></td><td>GPU 액세스를 위한 NVIDIA 컨테이너 런타임을 지정합니다.</td></tr><tr><td><code>-e NGC_API_KEY</code></td><td>(환경 변수 값)</td><td>NGC에서 모델/자산 다운로드 인증을 위해 NGC API 키를 컨테이너에 전달합니다.</td></tr><tr><td><code>-v LOCAL_NIM_CACHE:/opt/nim/.cache</code></td><td><code>\"$HOME/.cache/nim:/opt/nim/.cache\"</code></td><td>다운로드한 모델을 유지하고 재다운로드를 방지하기 위해 컨테이너 내 캐시로 호스트 디렉터리를 마운트합니다.</td></tr><tr><td><code>-p HOST_PORT:CONTAINER_PORT</code></td><td><code>8000:8000</code></td><td>호스트의 포트를 NIM 서비스가 수신 대기하는 컨테이너 내부의 포트에 매핑합니다.</td></tr><tr><td><code>NIM_IMAGE_NAME</code></td><td><code>nvcr.io/nim/meta/llama3-8b-instruct:1.0.0</code></td><td>실행할 특정 NIM의 전체 Docker 이미지 이름 및 태그입니다.</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">VIII. (선택 사항) CUDA 12.9를 지원하는 AI 프레임워크 설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>드라이버, CUDA Toolkit, cuDNN 및 Docker를 설정한 후 개발자는 일반적으로 PyTorch 또는 TensorFlow와 같은 AI 프레임워크를 설치합니다. 이는 종속성을 효과적으로 관리하기 위해 일반적으로 Python 가상 환경 내에서 <code>pip</code>를 사용하여 설치됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>시스템의 NVIDIA 드라이버는 CUDA 12.9와 호환되고 CUDA Toolkit 12.9가 설치되어 있지만, AI 프레임워크용 사전 컴파일된 <code>pip</code> 패키지는 약간 이전 CUDA 버전(예: CUDA 12.1, 12.3 또는 12.8)에 대해 빌드될 수 있다는 점에 유의해야 합니다. 이러한 패키지는 일반적으로 순방향 호환되며 드라이버의 호환성으로 인해 올바르게 실행되지만 프레임워크 자체는 핵심 작업을 위해 컴파일된 CUDA 버전을 활용합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">A. PyTorch</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>PyTorch는 종종 최신 CUDA 버전과 호환되는 <code>pip</code> 휠을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>**Python 가상 환경 생성 및 활성화:**Bash <code>python3 -m venv ~/pytorch_env source ~/pytorch_env/bin/activate</code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>PyTorch 설치:</strong> 최신 명령은 공식 PyTorch 웹사이트(<a href=\"https://pytorch.org/get-started/locally/\">https://pytorch.org/get-started/locally/</a>)를 참조하십시오. CUDA 12.x의 경우 다음과 유사한 명령이 일반적입니다. 최근 정보에 따르면 Linux용 <code>cu128</code>(CUDA 12.8) 휠이 포함된 PyTorch 2.7을 사용할 수 있으며 CUDA 12.9 환경과 호환되어야 합니다. 특정 <code>cu129</code> 휠을 사용할 수 있게 되면 해당 휠이 선호됩니다. 그렇지 않으면 <code>cu121</code> 또는 <code>cu128</code>이 일반적인 선택입니다. Bash*(설치 시점에 PyTorch에서 CUDA 12.9에 대해 더 직접적이거나 최신 호환 휠(예: <code>cu129</code> 또는 <code>cu121</code>)을 권장하는 경우 <code>cu128</code>을 조정하십시오).* <code>pip3 install torch torchvision torchaudio --index-url &lt;https://download.pytorch.org/whl/cu128</code>&gt;</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>**PyTorch 설치 확인:**Python Python 파일(예: <code>verify_pytorch.py</code>)로 저장하고 <code>python verify_pytorch.py</code>를 실행합니다. <code>torch.cuda.is_available()</code>는 <code>True</code>를 반환해야 합니다. <code>import torch print(f\"PyTorch Version: {torch.__version__}\") print(f\"CUDA Available: {torch.cuda.is_available()}\") if torch.cuda.is_available(): print(f\"CUDA Version (PyTorch built with): {torch.version.cuda}\") print(f\"GPU Name: {torch.cuda.get_device_name(0)}\")</code></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">B. TensorFlow</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>TensorFlow는 Python 환경 내에 호환되는 CUDA 및 cuDNN 라이브러리를 번들로 제공하여 GPU 설정을 단순화하려는 <code>tensorflow[and-cuda]</code> pip 패키지를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Python 가상 환경 생성 및 활성화: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>python3 -m venv ~/tensorflow_env source ~/tensorflow_env/bin/activate</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>GPU 지원 TensorFlow 설치:</strong><code>tensorflow[and-cuda]</code> 패키지는 특정 버전의 CUDA 및 cuDNN을 번들로 제공합니다. 예를 들어, 최신 TensorFlow 버전은 CUDA 12.3 및 cuDNN 8.9.7을 번들로 제공할 수 있습니다. 이는 TensorFlow가 시스템에 설치된 CUDA 12.9 및 해당 cuDNN을 직접 사용하지 않고 이러한 번들 라이브러리를 작업에 사용하지만 CUDA 12.9 호환 드라이버에서 실행된다는 의미입니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>pip install -U pip # pip 업그레이드 pip install tensorflow[and-cuda]</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>**TensorFlow 설치 확인:**Python <code>import tensorflow as tf print(f\"TensorFlow Version: {tf.__version__}\") gpus = tf.config.list_physical_devices(\'GPU\') if gpus: print(f\"Num GPUs Available: {len(gpus)}\") for gpu in gpus: print(f\"GPU Name: {gpu.name}\") else: print(\"No GPU detected by TensorFlow\")</code> Python 파일(예: <code>verify_tensorflow.py</code>)로 저장하고 <code>python verify_tensorflow.py</code>를 실행합니다. 출력에 Nvidia A100가 나열되어야 합니다. TensorFlow에 대해 시스템 CUDA 12.9와의 정확한 정렬이 엄격하게 필요한 경우 구성 프로세스 중에 CUDA 12.9 및 호환되는 cuDNN 버전을 지정하여 소스에서 TensorFlow를 빌드해야 합니다. 이는 고급 절차이며 TensorFlow 자체에서 해당 특정 CUDA 버전에 연결된 특정 기능이나 최적화가 필요한 경우가 아니면 일반적으로 필요하지 않습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>다음 표는 AI 프레임워크 설치에 대한 빠른 참조를 제공합니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>프레임워크</th><th>권장 설치 명령 (CUDA 12.x 호환성용)</th><th>확인 명령 (Python)</th><th>CUDA 12.9 참고 사항</th></tr></thead><tbody><tr><td>PyTorch</td><td><code>pip3 install torch torchvision torchaudio --index-url &lt;https://download.pytorch.org/whl/cu128</code>&gt;</td><td><code>import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda if torch.cuda.is_available() else \"\")</code></td><td>사전 빌드된 휠(예: <code>cu128</code> 또는 <code>cu121</code>)은 일반적으로 CUDA 12.9 드라이버/툴킷과 순방향 호환됩니다. 인쇄된 <code>torch.version.cuda</code>는 PyTorch가 빌드된 CUDA 버전을 보여줍니다.</td></tr><tr><td>TensorFlow</td><td><code>pip install tensorflow[and-cuda]</code></td><td><code>import tensorflow as tf; print(tf.__version__); print(tf.config.list_physical_devices(\'GPU\'))</code></td><td><code>tensorflow[and-cuda]</code> 패키지는 자체 CUDA/cuDNN(예: 최신 TF의 경우 CUDA 12.3/cuDNN 8.9.7)을 번들로 제공합니다. 시스템의 CUDA 12.9를 직접 사용하지 않고 이를 사용하지만 12.9 호환 드라이버에서 실행됩니다. 정확한 12.9 연결을 위해서는 소스에서 빌드하십시오.</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">IX. 일반적인 문제 해결</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>신중하게 설치하더라도 문제가 발생할 수 있습니다. 이 섹션에서는 일반적인 문제와 기본 문제 해결 단계를 다룹니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>NVIDIA 드라이버 문제:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>증상:</strong> <code>nvidia-smi</code> 명령 실패, GPU가 표시되지 않거나 시스템이 저해상도 디스플레이로 부팅됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>가능한 원인 및 해결 방법:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Nouveau 충돌:</strong> Nouveau가 블랙리스트에 있는지 확인합니다 (섹션 II.C.4).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Secure Boot MOK:</strong> Secure Boot가 활성화된 경우 NVIDIA 드라이버의 MOK가 올바르게 등록되지 않았을 수 있습니다. 재부팅하고 MOK 관리 옵션을 찾거나 Secure Boot를 일시적으로 비활성화합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>설치 오류:</strong> 드라이버 설치 중 오류에 대해 <code>apt</code> 로그(<code>/var/log/apt/term.log</code>) 및 커널 메시지(<code>dmesg | grep -i nvidia</code>)를 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>드라이버 재설치:</strong> 완전히 새로 설치해야 할 수 있습니다. 재설치하기 전에 기존 NVIDIA 패키지를 제거합니다 (<code>sudo apt purge \'*nvidia*\' &amp;&amp; sudo apt autoremove</code>).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"GPU has fallen off the bus\":</strong> 이는 하드웨어 문제(GPU 장착, 전원 공급 장치, PCIe 슬롯), 과열 또는 심각한 드라이버/커널 비호환성을 나타낼 수 있는 심각한 오류입니다. 먼저 물리적 연결을 확인하십시오. 소프트웨어 비호환성인 경우 다른 드라이버 버전(이전 또는 최신 안정 버전)을 시도하면 도움이 될 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>CUDA Toolkit 문제:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>증상:</strong> <code>nvcc: command not found</code>.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>가능한 원인 및 해결 방법:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>환경 변수:</strong> <code>PATH</code> 및 <code>LD_LIBRARY_PATH</code>가 올바르게 설정되지 않았거나 현재 터미널 세션에서 <code>~/.bashrc</code> 변경 사항이 적용되지 않았습니다 (섹션 IV.B). <code>echo $PATH</code> 및 <code>echo $LD_LIBRARY_PATH</code>로 확인합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>증상:</strong> CUDA 샘플(예: <code>deviceQuery</code>)이 컴파일 또는 실행되지 않습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>가능한 원인 및 해결 방법:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>드라이버-툴킷 불일치:</strong> 리포지토리 설치는 이를 최소화하지만 드라이버가 CUDA 툴킷 버전을 지원하는지 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>누락된 종속성:</strong> <code>build-essential</code> 또는 기타 개발 도구가 누락되었을 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>잘못된 툴킷 버전:</strong> <code>nvcc --version</code>이 예상과 다른 버전을 표시합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>cuDNN 문제:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>증상:</strong> AI 프레임워크 또는 애플리케이션에서 누락된 cuDNN 라이브러리(예: <code>libcudnn.so.9: cannot open shared object file</code>)를 보고합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>가능한 원인 및 해결 방법:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>설치 미완료:</strong> cuDNN 런타임(<code>libcudnn9-cuda-12</code>) 또는 개발자 패키지(<code>libcudnn9-dev-cuda-12</code>)가 올바르게 설치되지 않았을 수 있습니다. <code>dpkg -l | grep libcudnn</code>으로 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>라이브러리 경로:</strong> <code>LD_LIBRARY_PATH</code>에 cuDNN 라이브러리가 설치된 디렉터리가 포함되어 있지 않을 수 있습니다 (<code>apt</code>는 일반적으로 시스템 라이브러리 경로를 통해 이를 처리하지만). <code>sudo ldconfig -p | grep libcudnn</code>은 동적 링커가 라이브러리를 찾는지 보여줄 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker GPU 액세스 문제:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>증상:</strong> <code>docker run --gpus all...</code>이 NVIDIA 런타임 또는 GPU 액세스와 관련된 오류로 실패합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>가능한 원인 및 해결 방법:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>NVIDIA Container Toolkit:</strong> 설치되지 않았거나 <code>nvidia-ctk runtime configure --runtime=docker</code>가 실행되지 않았거나 구성 후 Docker 데몬이 다시 시작되지 않았습니다 (섹션 VI.C).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 데몬:</strong> Docker 서비스가 실행 중이고 구성 변경 후 다시 시작되었는지 확인합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>증상:</strong> 호스트에서는 <code>nvidia-smi</code>가 작동하지만 GPU 지원 컨테이너 내부에서는 작동하지 않습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>가능한 원인 및 해결 방법:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Docker의 <code>daemon.json</code>에 있는 NVIDIA 런타임 구성 문제.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>잘못된 <code>-gpus</code> 플래그 사용 또는 호환되지 않는 기본 이미지.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>일반적인 문제 해결 팁:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>시스템 로그 확인:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>dmesg</code>: 커널 링 버퍼, 하드웨어 및 모듈 로드 문제에 유용합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>journalctl -xe</code>: 자세한 시스템 로그, 종종 서비스 오류를 표시합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>/var/log/syslog</code>: 일반 시스템 메시지.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>/var/log/nvidia-installer.log</code>: NVIDIA의 <code>.run</code> 파일을 사용하여 드라이버를 설치한 경우 (여기서는 권장하지 않음).</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>재부팅:</strong> 중요한 드라이버 또는 커널 모듈 변경 후에는 종종 재부팅이 필수적입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>NVIDIA 개발자 포럼:</strong> 특정 문제에 대한 도움을 받을 수 있는 귀중한 리소스입니다. 시스템, 설치된 소프트웨어 버전 및 오류 메시지에 대한 자세한 정보를 제공하십시오.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><code>nvidia-smi</code>로 드라이버를 확인하고, <code>nvcc</code> 및 샘플로 CUDA를 확인하고, cuDNN을 확인하고, 마지막으로 Docker를 확인하는 체계적인 접근 방식은 문제가 있을 수 있는 부분을 격리하는 데 도움이 됩니다. 특히 CUDA 및 cuDNN의 많은 문제는 잘못된 환경 변수 설정이나 조정된 리포지토리에서 신중하게 설치하지 않은 경우 구성 요소 버전 간의 불일치로 인해 발생합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">X. 결론 및 모범 사례</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>이 보고서는 NVIDIA RTX 6000 Ada Nvidia A100그래픽 카드를 갖춘 Ubuntu 24.04 워크스테이션에서 강력한 AI 개발 환경을 구축하는 과정을 자세히 설명했습니다. 공식 NVIDIA 리포지토리를 사용하여 NVIDIA 드라이버, CUDA Toolkit 12.9 및 해당 cuDNN 라이브러리를 체계적으로 설치함으로써 개발자는 안정적이고 고성능의 기반을 확보할 수 있습니다. 또한 NVIDIA Container Toolkit을 사용한 Docker 구성은 휴대 가능하고 재현 가능한 GPU 가속 워크플로를 가능하게 하며, NVIDIA NIM 소개는 간소화된 AI 모델 배포 경로를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>건강한 AI 개발 환경 유지를 위한 주요 모범 사례:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>공식 리포지토리 활용:</strong> 가능하면 NVIDIA의 공식 <code>apt</code> 리포지토리에서 NVIDIA 드라이버, CUDA Toolkit 및 cuDNN을 설치하십시오. 이 방법은 일반적으로 구성 요소 호환성을 보장하고 업데이트를 단순화합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>버전 고정 (고려 사항):</strong> 프로덕션 또는 중요한 연구 환경의 경우 <code>apt</code> 기본 설정을 사용하여 드라이버 및 CUDA 구성 요소의 버전을 고정하여 기존 워크플로와 비호환성을 유발할 수 있는 의도하지 않은 업그레이드를 방지하는 것을 고려하십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Python 가상 환경:</strong> AI 프로젝트에는 항상 Python 가상 환경(예: <code>venv</code>, <code>conda</code>)을 사용하십시오. 이렇게 하면 종속성을 격리하여 PyTorch 또는 TensorFlow와 같은 라이브러리의 다른 버전이 필요한 프로젝트 간의 충돌을 방지합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>정기적인 문서 참조:</strong> AI 및 GPU 컴퓨팅 환경은 빠르게 발전합니다. 최신 호환성 정보, 기능 및 모범 사례를 위해 CUDA, cuDNN, 드라이버 및 AI 프레임워크에 대한 공식 NVIDIA 문서를 정기적으로 확인하십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>GPU 사용률 모니터링:</strong> 개발 및 배포 중에 <code>nvidia-smi</code> 또는 NVIDIA Nsight와 같은 도구를 사용하여 GPU 사용률, 메모리 사용량 및 성능을 모니터링하십시오. 이는 병목 현상을 식별하고 GPU 리소스가 효율적으로 사용되고 있는지 확인하는 데 도움이 됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>NGC API 키 보안:</strong> NVIDIA NIM 또는 기타 NGC 리소스를 사용할 때 NGC API 키를 기밀로 유지하고 안전하게 관리하십시오. 스크립트에 키를 하드코딩하거나 버전 제어에 커밋하지 마십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>체계적인 업데이트:</strong> 중요한 워크스테이션에 적용하기 전에 가능하면 스테이징 환경에서 테스트하여 드라이버 및 CUDA 구성 요소 업데이트를 신중하게 계획하십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>커뮤니티 및 지원:</strong> 문제 해결 및 커뮤니티 지원을 위해 NVIDIA 개발자 포럼과 같은 리소스를 활용하십시오.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이러한 지침과 제공된 자세한 설치 단계를 따르면 사용자는 Ubuntu 24.04에서 최첨단 AI 코딩 및 연구를 위해 Nvidia A100 워크스테이션의 잠재력을 극대화할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;target_arch=x86_64&amp;Distribution=Ubuntu&amp;target_version=24.04&amp;target_type=deb_local\">https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;target_arch=x86_64&amp;Distribution=Ubuntu&amp;target_version=24.04&amp;target_type=deb_local</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>CUDA Toolkit Installer</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Installation Instructions:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin\nsudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600\nwget https://developer.download.nvidia.com/compute/cuda/12.9.0/local_installers/cuda-repo-ubuntu2404-12-9-local_12.9.0-575.51.03-1_amd64.deb\nsudo dpkg -i cuda-repo-ubuntu2404-12-9-local_12.9.0-575.51.03-1_amd64.deb\nsudo cp /var/cuda-repo-ubuntu2404-12-9-local/cuda-*-keyring.gpg /usr/share/keyrings/\nsudo apt-get update\nsudo apt-get -y install cuda-toolkit-12-9\n\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>Additional installation options are detailed here.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Driver Installer</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>NVIDIA Driver Instructions (choose one option)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>To install the open kernel module flavor:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y nvidia-open\n\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>To install the proprietary kernel module flavor:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo apt-get install -y cuda-drivers\n\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>To switch between NVIDIA Driver kernel module flavors see here.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The CUDA Toolkit contains Open-Source Software. The source code can be found here. The checksums for the installer and patches can be found in Installer Checksums. For further information, see the Installation Guide for Linux and the CUDA Quick Start Guide.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ubuntu 20.04/22.04/24.04, Debian 12</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>To switch from proprietary to open:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># apt install --autoremove --purge nvidia-open\n\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>￼ To switch from open to proprietary:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># apt install --autoremove --purge cuda-drivers\n\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">참고자료</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://velog.io/@scuderia/리눅스-24.04-cuda-cudnn-설치\">https://velog.io/@scuderia/리눅스-24.04-cuda-cudnn-설치</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;target_arch=x86_64&amp;Distribution=Ubuntu&amp;target_version=24.04&amp;target_type=deb_network\">https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;target_arch=x86_64&amp;Distribution=Ubuntu&amp;target_version=24.04&amp;target_type=deb_network</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>nividia driver 설치</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>sudo apt install nvidia-cuda-toolkit</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>llama-cpp-python version available for CUDA 11.7.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>cuda</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://www.cherryservers.com/blog/install-cuda-ubuntu\">https://www.cherryservers.com/blog/install-cuda-ubuntu</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://developer.nvidia.com/cuda-12-2-2-download-archive?target_os=Linux&amp;target_arch=x86_64&amp;Distribution=Ubuntu&amp;target_version=22.04&amp;target_type=deb_local\">https://developer.nvidia.com/cuda-12-2-2-download-archive?target_os=Linux&amp;target_arch=x86_64&amp;Distribution=Ubuntu&amp;target_version=22.04&amp;target_type=deb_local</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>Nvidia NIM</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://docs.nvidia.com/nim/large-language-models/latest/getting-started.html\">https://docs.nvidia.com/nim/large-language-models/latest/getting-started.html</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-22-04\">https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-22-04</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>nvidia GPU on Docker</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://www.howtogeek.com/devops/how-to-use-an-nvidia-gpu-with-docker-containers\">https://www.howtogeek.com/devops/how-to-use-an-nvidia-gpu-with-docker-containers</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://www.cyberciti.biz/faq/how-to-install-nvidia-driver-on-centos-7-linux\">https://www.cyberciti.biz/faq/how-to-install-nvidia-driver-on-centos-7-linux</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#rhel-7-centos-7\">https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#rhel-7-centos-7</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','NVIDIA- GPU 세팅 종합가이드','','publish','open','closed','','nvidia-gpu-%ec%84%b8%ed%8c%85','','','2025-10-22 21:33:10','2025-10-22 12:33:10','',0,'http://kbsi',0,'docs','',0),
(11,1,'2025-10-13 13:41:16','2025-10-13 04:41:16','<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>설치 이미지(ISO) 다운로드 • Ubuntu 공식 홈페이지(<a href=\"http://ubuntu.com/\">ubuntu.com</a>)에서 Ubuntu 24.04 LTS Desktop 또는 Server ISO 파일을 다운로드합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>부팅 USB 만들기<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Windows: Rufus, macOS/Linux: Etcher 등 툴로 다운로드한 ISO 파일을 USB에 기록합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>USB를 PC에 연결합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>바이오스(BIOS/UEFI) 설정<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>컴퓨터 부팅 시 F2, Del 등으로 BIOS/UEFI에 진입 후, 부팅 순서를 USB가 최우선이 되도록 설정합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Ubuntu 설치 시작<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>USB로 부팅하면 Ubuntu 설치 화면이 나옵니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>언어 선택, 키보드 레이아웃, 네트워크, 디스크(파티션) 설정 등 안내에 따라 진행합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>사용자 계정 및 기타 설정<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>사용자 이름, 비밀번호 등 계정 정보를 입력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>설치가 완료되면 USB를 제거하고 재부팅하면 Ubuntu 24.04가 실행됩니다. 가상머신(VMware 등)에 설치하는 경우, VMware에서 “Create a New Virtual Machine” → ISO 파일 선택 → 하드웨어/디스크/계정 설정 → 설치 진행 순서로 진행하면 됩니다. 참고</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>설치 중 디스크 파티션을 잘못 선택하면 기존 데이터가 삭제될 수 있으니 주의하세요.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Server 버전은 텍스트 기반, Desktop 버전은 GUI(마우스 사용 가능)입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','워크스테이션(PC)에 Ubuntu 24.04 설치 방법','','publish','open','closed','','%ec%9b%8c%ed%81%ac%ec%8a%a4%ed%85%8c%ec%9d%b4%ec%85%98pc%ec%97%90-ubuntu-24-04-%ec%84%a4%ec%b9%98-%eb%b0%a9%eb%b2%95','','','2025-10-13 13:41:16','2025-10-13 04:41:16','',0,'http://kbsi',0,'docs','',0),
(12,1,'2025-10-13 13:41:16','2025-10-13 04:41:16','<!-- wp:paragraph -->\n<p>Ubuntu를 사용하면서 터미널에서 가장 자주 사용하게 될 기본 명령어들을 정리했습니다. 이 명령어들은 파일 및 디렉토리 관리, 시스템 정보 확인, 소프트웨어 설치 등 다양한 작업을 수행하는 데 필수적입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">파일 및 디렉토리 관리</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>pwd</code></strong> (print working directory): 현재 작업 중인 디렉토리의 전체 경로를 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>pwd</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>ls</code></strong> (list): 현재 디렉토리의 파일과 서브 디렉토리 목록을 보여줍니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>자주 사용되는 옵션:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-l</code>: 파일의 상세 정보 (권한, 소유자, 크기, 수정 날짜 등)를 함께 출력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-a</code>: 숨김 파일을 포함한 모든 파일을 출력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-h</code>: 파일 크기를 사람이 읽기 쉬운 형식 (KB, MB, GB)으로 출력합니다. (<code>-l</code>과 함께 사용)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>ls -alH</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>cd</code></strong> (change directory): 디렉토리(폴더)를 이동합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>cd [디렉토리명]</code>: 지정한 디렉토리로 이동합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>cd ..</code>: 상위 디렉토리로 이동합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>cd ~</code> 또는 <code>cd</code>: 사용자 홈 디렉토리로 이동합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>cd -</code>: 이전에 작업하던 디렉토리로 이동합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>cd Documents</code>, <code>cd ..</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>mkdir</code></strong> (make directory): 새로운 디렉토리를 생성합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>mkdir [새 디렉토리명]</code>: 현재 위치에 새 디렉토리를 만듭니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>mkdir -p [경로/새 디렉토리명]</code>: 상위 디렉토리가 없으면 함께 생성하면서 새 디렉토리를 만듭니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>mkdir my_new_folder</code>, <code>mkdir -p project/src</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>rmdir</code></strong> (remove directory): 비어 있는 디렉토리를 삭제합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>rmdir [디렉토리명]</code>: 지정한 디렉토리를 삭제합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>rmdir empty_folder</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>cp</code></strong> (copy): 파일이나 디렉토리를 복사합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>cp [원본 파일] [대상 위치/파일명]</code>: 파일을 복사합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>cp -r [원본 디렉토리] [대상 위치]</code>: 디렉토리와 그 안의 모든 내용을 재귀적으로 복사합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>cp file.txt new_file.txt</code>, <code>cp -r my_project /backup</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>mv</code></strong> (move): 파일이나 디렉토리를 이동하거나 이름을 변경합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>mv [원본 파일/디렉토리] [대상 위치/새 이름]</code>: 파일이나 디렉토리를 이동합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>mv [원본 파일/디렉토리] [새 이름]</code>: 파일이나 디렉토리의 이름을 변경합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>mv old_name.txt new_name.txt</code>, <code>mv my_file.txt /documents/</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>rm</code></strong> (remove): 파일이나 디렉토리를 삭제합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>rm [파일명]</code>: 파일을 삭제합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>rm -r [디렉토리명]</code>: 디렉토리와 그 안의 모든 내용을 재귀적으로 삭제합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>rm -f [파일명]</code>: 강제로 파일을 삭제합니다. (확인 메시지 없이)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>rm -rf [디렉토리명]</code>: 강제로 디렉토리와 그 안의 모든 내용을 재귀적으로 삭제합니다. (<strong>매우 주의해서 사용해야 합니다!</strong>)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>rm unwanted_file.txt</code>, <code>rm -rf old_project</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>touch</code></strong>: 비어 있는 파일을 생성하거나 파일의 접근 및 수정 시간을 업데이트합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>touch new_empty_file.txt</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>cat</code></strong> (concatenate): 파일 내용을 출력하거나 여러 파일을 연결하여 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>cat my_document.txt</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>less</code></strong>: 긴 파일 내용을 페이지 단위로 출력하여 스크롤하면서 볼 수 있게 합니다. <code>cat</code>보다 긴 파일에 유용합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>q</code>를 눌러 종료합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>less long_log_file.log</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>head</code></strong>: 파일의 시작 부분 10줄을 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-n [숫자]</code> 옵션으로 출력할 줄 수를 지정할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>head -n 5 access.log</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>tail</code></strong>: 파일의 끝 부분 10줄을 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-n [숫자]</code> 옵션으로 출력할 줄 수를 지정할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-f</code>: 실시간으로 파일에 추가되는 내용을 계속해서 출력합니다 (로그 파일 모니터링에 유용).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>tail -n 20 error.log</code>, <code>tail -f system.log</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">시스템 정보 및 프로세스 관리</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>whoami</code></strong>: 현재 로그인된 사용자 이름을 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>whoami</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>df</code></strong> (disk free): 파일 시스템의 디스크 공간 사용량을 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-h</code> 옵션을 함께 사용하여 사람이 읽기 쉬운 형식으로 출력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>df -h</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>du</code></strong> (disk usage): 파일이나 디렉토리의 디스크 사용량을 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-h</code> 옵션을 함께 사용하여 사람이 읽기 쉬운 형식으로 출력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-s</code>: 총 사용량만 요약하여 출력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>du -sh my_folder</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>ps</code></strong> (process status): 현재 실행 중인 프로세스 목록을 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>ps aux</code>: 모든 사용자(a)의 모든 프로세스(x)와 상세 정보(u)를 출력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>ps aux</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>top</code></strong>: 실시간으로 시스템의 프로세스, 메모리, CPU 사용량 등을 모니터링합니다. <code>q</code>를 눌러 종료합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>top</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>kill</code></strong>: 특정 프로세스를 종료합니다. 프로세스 ID (PID)를 사용합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>kill [PID]</code>: 프로세스를 종료 요청합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>kill -9 [PID]</code>: 강제로 프로세스를 종료합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>kill 12345</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">소프트웨어 관리</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>sudo</code></strong> (superuser do): 일반 사용자가 관리자(루트) 권한으로 명령어를 실행할 수 있게 합니다. 보안상 매우 중요한 명령어입니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>sudo apt update</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>apt update</code></strong>: 설치 가능한 패키지 목록을 최신 정보로 업데이트합니다. 새로운 소프트웨어를 설치하거나 기존 소프트웨어를 업데이트하기 전에 항상 실행해야 합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>sudo apt update</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>apt upgrade</code></strong>: 설치된 모든 패키지를 최신 버전으로 업그레이드합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>sudo apt upgrade</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>apt install</code></strong>: 새로운 소프트웨어 패키지를 설치합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>sudo apt install vlc</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>apt remove</code></strong>: 소프트웨어 패키지를 제거합니다. 설정 파일은 남겨둡니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>sudo apt remove firefox</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>apt purge</code></strong>: 소프트웨어 패키지와 함께 모든 설정 파일까지 완전히 제거합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>sudo apt purge apache2</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>apt autoremove</code></strong>: 더 이상 필요하지 않은 의존성 패키지들을 자동으로 제거합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>sudo apt autoremove</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">네트워크 관련</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>ping</code></strong>: 네트워크 연결 상태를 확인합니다. 특정 IP 주소나 도메인으로 데이터 패킷을 전송하여 응답 시간을 측정합니다. <code>Ctrl+C</code>로 중단합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>ping google.com</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>ip addr</code></strong>: 시스템의 IP 주소 및 네트워크 인터페이스 정보를 출력합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>ip addr</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">압축 및 압축 해제</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>tar</code></strong>: 여러 파일을 하나로 묶거나 압축/압축 해제할 때 사용합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>압축</strong>: <code>tar -cvf [아카이브명.tar] [대상 파일/디렉토리]</code><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-c</code>: 생성 (create)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-v</code>: 과정 출력 (verbose)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-f</code>: 파일 지정 (file)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>압축 (gzip)</strong>: <code>tar -czvf [아카이브명.tar.gz] [대상 파일/디렉토리]</code><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-z</code>: gzip 압축 사용</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>압축 해제</strong>: <code>tar -xvf [아카이브명.tar]</code><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>-x</code>: 추출 (extract)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>압축 해제 (gzip)</strong>: <code>tar -xzvf [아카이브명.tar.gz]</code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>tar -cvf my_archive.tar my_folder</code>, <code>tar -xzvf backup.tar.gz</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>gzip</code></strong>: 파일을 <code>.gz</code> 형식으로 압축합니다. 원본 파일은 삭제됩니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>gzip [파일명]</code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>gzip document.txt</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>gunzip</code></strong>: <code>.gz</code> 파일을 압축 해제합니다. 원본 압축 파일은 삭제됩니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>gunzip [파일명.gz]</code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>gunzip document.txt.gz</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>unzip</code></strong>: <code>.zip</code> 파일을 압축 해제합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>unzip [파일명.zip]</code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>unzip my_files.zip</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">기타 유용한 명령어</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong><code>man</code></strong> (manual): 명령어에 대한 매뉴얼 페이지를 보여줍니다. 사용법을 모를 때 유용합니다. <code>q</code>를 눌러 종료합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>man ls</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>history</code></strong>: 이전에 입력했던 명령어들의 목록을 보여줍니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>history</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>clear</code></strong>: 터미널 화면을 깨끗하게 지웁니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>clear</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>echo</code></strong>: 문자열을 화면에 출력하거나 파일에 기록합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시: <code>echo \"Hello, Ubuntu!\"</code>, <code>echo \"My text\" > new_file.txt</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>grep</code></strong>: 파일 내용에서 특정 문자열을 검색합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>grep [검색할 문자열] [파일명]</code></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-i</code>: 대소문자 구분 없이 검색</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>-r</code>: 하위 디렉토리까지 재귀적으로 검색</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>grep \"error\" /var/log/syslog</code>, <code>grep -iR \"config\" /etc</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong><code>find</code></strong>: 파일 시스템에서 파일이나 디렉토리를 검색합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>find [경로] -name \"[패턴]\"</code>: 파일 이름으로 검색</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><code>find [경로] -type d -name \"[패턴]\"</code>: 디렉토리 이름으로 검색</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예시: <code>find . -name \"*.txt\"</code>, <code>find /home -type d -name \"Documents\"</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 명령어들은 Ubuntu를 효율적으로 사용하는 데 있어 기본이 됩니다. 각 명령어의 다양한 옵션들을 <code>man</code> 명령어를 통해 확인해 보시면 더욱 풍부하게 활용할 수 있습니다.</p>\n<!-- /wp:paragraph -->','Ubuntu 에서 사용할 기본 명령어','','publish','open','closed','','ubuntu-%ec%97%90%ec%84%9c-%ec%82%ac%ec%9a%a9%ed%95%a0-%ea%b8%b0%eb%b3%b8-%eb%aa%85%eb%a0%b9%ec%96%b4','','','2025-10-13 13:41:16','2025-10-13 04:41:16','',0,'http://kbsi',0,'docs','',0),
(13,1,'2025-10-13 13:41:16','2025-10-13 04:41:16','<!-- wp:paragraph -->\n<p>본 매뉴얼은 GPT-Researcher의 설치, 사용 및 다양한 활용 예시를 상세히 다루어, 사용자가 이 강력한 AI 연구 에이전트를 효과적으로 활용할 수 있도록 돕는 것을 목표로 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>1. GPT-Researcher 개요</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 웹 및 로컬 환경에서 심층적인 연구를 수행하도록 설계된 오픈 소스 AI 에이전트입니다. 그 주된 목적은 상세하고 사실적이며 편향되지 않은 연구 보고서를 인용과 함께 생성하는 것입니다. 이 에이전트는 광범위한 사용자 정의 옵션을 제공하여, 사용자가 특정 도메인에 맞춤화된 연구 에이전트를 생성할 수 있도록 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>1.1. GPT-Researcher란 무엇인가?</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 웹 및 로컬 환경에서 주어진 모든 작업에 대해 심층 연구를 수행하는 개방형 에이전트입니다. 그 핵심 목적은 상세하고, 사실적이며, 편향되지 않은 연구 보고서를 인용과 함께 생성하는 것입니다. 이 에이전트는 광범위한 사용자 정의 옵션을 제공하며, 사용자가 특정 도메인에 맞춤화된 연구 에이전트를 생성할 수 있도록 지원합니다. 이 시스템은 Plan-and-Solve 및 RAG(Retrieval-Augmented Generation) 논문에서 영감을 받아 개발되었으며, 병렬화된 에이전트 작업을 통해 안정적인 성능과 향상된 속도를 제공함으로써 정보의 오용, 처리 속도, 결정론, 신뢰성 등의 문제를 해결하고자 합니다. 궁극적인 임무는 AI를 통해 개인과 조직에 정확하고 편향되지 않으며 사실적인 정보를 제공하는 것입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher의 개발은 현재 정보 환경에서 나타나는 여러 문제점을 해결하는 데 중점을 둡니다. 첫째, 수동 연구를 통해 객관적인 결론을 도출하는 과정은 종종 수 주가 소요될 수 있으며 상당한 자원과 시간을 요구합니다. 둘째, 오래된 정보로 학습된 대규모 언어 모델(LLMs)은 때때로 \"환각\" 현상을 일으켜 부정확하거나 관련 없는 정보를 생성할 수 있으며, 이는 현재 연구 작업에 부적합할 수 있습니다. 셋째, 현재 LLMs는 긴 연구 보고서를 생성하기에 불충분한 토큰 제한을 가지고 있어, 심층적인 분석을 어렵게 만듭니다. 넷째, 기존 서비스의 제한적인 웹 소스 사용은 오정보와 피상적인 결과로 이어질 수 있으며 , 선택적인 웹 소스는 연구 작업에 편향을 도입할 수 있습니다. GPT-Researcher는 이러한 문제들을 해결함으로써, 정보의 신뢰성과 효율성을 높이는 것을 목표로 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 도구는 연구 보고서 생성, 개요 작성, 자료 보고서 취합, 강의 보고서 개발 등 다양한 일반적인 활용 사례를 지원합니다. 특히 2,000단어 이상의 장문 보고서 생성 능력을 갖추고 있으며, 연구 작업당 20개 이상의 웹 소스를 취합하여 객관적이고 사실적인 결론을 도출합니다. 또한, 사용자 친화적인 웹 인터페이스를 제공하고 , JavaScript를 지원하는 웹 소스를 스크래핑할 수 있습니다. 방문 및 사용된 웹 소스를 추적하여 투명성을 보장하며 , PDF, Word 등 다양한 형식으로 보고서를 내보낼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher가 \"사실적이고 편향되지 않은 연구 보고서와 인용\"을 반복적으로 강조하고 , LLM의 고질적인 문제인 \"오정보\"와 \"환각\"을 해결하겠다는 점은 이 도구가 명확한 전략적 포지셔닝을 가지고 있음을 나타냅니다. 이는 단순히 LLM을 활용한 도구가 아니라, 정확성과 검증 가능성이 필수적인 중요한 애플리케이션에서 순수 LLM의 알려진 약점을 보완하기 위해 설계되었습니다. Plan-and-Solve 및 RAG 논문에서 영감을 받았다는 언급 은 이 도구가 정보 검색 및 합성에 있어 견고하고 원칙적인 접근 방식을 기반으로 함을 보여주며, 이는 경험적 접근 방식보다 더 신뢰할 수 있는 결과를 제공할 수 있습니다. 이러한 설계는 GPT-Researcher가 신뢰할 수 있는 AI 생성 콘텐츠에 대한 중요한 시장 요구를 충족시키는 도구로 자리매김하게 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>1.2. 주요 기능 및 아키텍처</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 자율 에이전트들이 복잡한 작업을 수행하기 위해 소통하고 협력하는 다중 에이전트 프레임워크 내에서 작동하도록 설계되었습니다. 이 시스템은 Langchain에서 구축된 Python 라이브러리인 LangGraph와 통합되어 있으며, 이는 상태 저장형, 다중 액터 LLM 애플리케이션을 구축하는 데 사용됩니다. LangGraph의 DAG(Directed Acyclic Graph) 아키텍처는 전문화된 에이전트들이 통신하고 작업을 트리거할 수 있도록 함으로써 복잡한 연구 프로세스를 효율적으로 관리합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher의 연구 팀은 총 7개의 AI 에이전트로 구성되어 있으며, 각 에이전트는 특정 역할을 수행합니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Chief Editor (총괄 편집자):</strong> 연구 프로세스를 감독하고 팀을 관리하는 \"마스터\" 에이전트로서, LangGraph를 사용하여 다른 에이전트들을 조정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Researcher (연구원 - gpt-researcher):</strong> 주어진 주제에 대해 심층 연구를 수행하는 전문 자율 에이전트입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Editor (편집자):</strong> 연구 개요 및 구조를 계획하는 역할을 담당합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Reviewer (검토자):</strong> 주어진 기준에 따라 연구 결과의 정확성을 검증하고 피드백을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Revisor (수정자):</strong> 검토자의 피드백을 기반으로 연구 결과를 수정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Writer (작성자):</strong> 서론, 결론, 참고 문헌 섹션을 포함하여 최종 보고서를 작성하고 편집하는 역할을 담당합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Publisher (출판자):</strong> 최종 보고서를 PDF, Docx, Markdown 등 다양한 형식으로 출판하는 역할을 담당합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이러한 다중 에이전트 팀은 다음 5단계의 연구 프로세스를 통해 작업을 수행합니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Planning stage (계획 단계):</strong> Chief Editor가 전체 프로세스를 감독하며 연구의 방향을 설정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Data collection and analysis (데이터 수집 및 분석):</strong> Researcher가 심층 연구를 수행하고 초안을 작성합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Writing and submission (작성 및 제출):</strong> Writer가 서론, 결론, 참고 문헌을 포함한 최종 보고서를 작성합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Review and revision (검토 및 수정):</strong> Reviewer가 초안의 정확성을 검증하고 피드백을 제공하며, Revisor가 이 피드백을 기반으로 수정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Publication (출판):</strong> Publisher가 최종 보고서를 다양한 형식으로 출판합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>7개의 에이전트로 구성된 상세한 프레임워크와 그들의 순차적인 프로세스는 GPT-Researcher의 중요한 설계 선택입니다. 이는 여러 역할이 정보에 기여하고 이를 검증하는 인간의 편집 프로세스를 모방합니다. LangGraph를 활용한 이 다중 에이전트 아키텍처는 단순히 작업 분배를 넘어, 내부적인 점검과 균형을 도입하여 결과물의 신뢰성과 품질을 향상시키기 위한 의도적인 전략입니다. 특히 \"Reviewer\"와 \"Revisor\" 에이전트는 비편향적이고 사실적이라는 주장을 뒷받침하기 위해 비판적 검토 주기를 시뮬레이션합니다. 이는 단일 에이전트 LLM 시스템에 비해 더 높은 수준의 결정론과 신뢰성을 의미하며, 이는 개요에서 강조된 정보의 오용 및 편향 문제를 직접적으로 해결합니다. 이러한 설계는 GPT-Researcher의 강력한 차별화 요소로 작용합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>2. 설치 방법</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 다양한 방법으로 설치 및 실행할 수 있으며, 사용자의 환경과 선호도에 따라 적절한 방법을 선택할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.1. 사전 준비 사항 (Prerequisites)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher를 설치하기 위해서는 Python 3.11 이상 버전이 필요합니다. Python 공식 웹사이트에서 최신 버전을 다운로드하여 설치할 수 있습니다. Python 3.11+의 엄격한 요구 사항은 GPT-Researcher가 이 버전에서 도입된 특정 기능이나 최적화에 의존하고 있음을 의미합니다. 이는 사용자에게 매우 중요하며, 이전 Python 버전을 사용하면 호환성 문제와 오류가 발생할 가능성이 높습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>또한, OpenAI 및 Tavily API 키를 준비해야 합니다. GPT-Researcher는 기본적으로 OpenAI를 LLM 호출에 사용하고 Tavily API를 실시간 온라인 정보 검색에 사용합니다. Tavily는 연구 작업에 있어 사실적이고 편향되지 않은 정보에 중점을 두기 때문에 추천됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.2. 기본 설치 및 실행 (Standard Installation and Execution)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>이 방법은 가장 일반적인 설치 방식으로, GitHub 저장소를 클론하여 직접 실행합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>프로젝트 클론:</strong> 먼저 GPT-Researcher 프로젝트를 GitHub 저장소에서 클론하고 해당 디렉토리로 이동합니다.<br>git clone https://github.com/assafelovic/gpt-researcher.git<br>cd gpt-researcher<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>API 키 설정:</strong> OpenAI 및 Tavily API 키를 환경 변수로 설정하거나 .env 파일에 저장해야 합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>환경 변수로 내보내기 (임시, Linux/Windows):</strong> 현재 세션에서만 유효한 임시 설정을 위해 다음 명령어를 사용합니다.<br>export OPENAI_API_KEY={여기에 OpenAI API 키 입력}<br>export TAVILY_API_KEY={여기에 Tavily API 키 입력}<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>.env 파일 사용 (영구 설정):</strong> gpt-researcher 폴더 내에 .env 파일을 생성하고 다음 형식으로 키를 입력합니다. 이 방법은 민감한 자격 증명이 코드 저장소나 명령 기록에 우발적으로 노출되는 것을 방지하는 중요한 보안 모범 사례입니다.<br>OPENAI_API_KEY={여기에 OpenAI API 키 입력}<br>TAVILY_API_KEY={여기에 Tavily API 키 입력}<br><em>참고: 다른 LLM 또는 검색 엔진 공급자를 사용하려면 해당 API 키를 환경 변수로 설정해야 할 수 있습니다.</em></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>의존성 설치 및 서버 시작:</strong> API 키 설정을 완료한 후, 필요한 의존성을 pip을 사용하여 설치하고 서버를 시작합니다.<br>pip install -r requirements.txt<br>python -m uvicorn main:app --reload<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>웹 인터페이스 접속:</strong> 서버가 성공적으로 실행되면 웹 브라우저에서 http://localhost:8000으로 접속하여 GPT-Researcher의 웹 인터페이스를 사용할 수 있습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.3. PIP 패키지로 설치 및 사용 (Installation and Usage as a PIP Package)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 PIP 패키지로도 설치하여 Python 프로젝트에 통합할 수 있습니다. 이는 재사용성과 통합에 중점을 둔 설계 철학을 나타냅니다. 이를 통해 개발자는 GPT-Researcher의 핵심 기능을 기존 Python 애플리케이션이나 워크플로에 쉽게 포함할 수 있으며, 독립형 웹 인터페이스에 국한되지 않습니다. 이는 데이터 파이프라인, 콘텐츠 생성 플랫폼 또는 분석 도구와 같은 더 큰 시스템 내에서 연구 작업을 자동화할 수 있도록 하여 유용성을 크게 확장합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>PIP 패키지 설치:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>pip install gpt-researcher\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p><strong>예시 사용 (Python 스크립트):</strong> GPTResearcher 클래스를 임포트하여 연구를 수행할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:group {\"layout\":{\"type\":\"constrained\"}} -->\n<div class=\"wp-block-group\"><!-- wp:code -->\n<pre class=\"wp-block-code\"><code>\nfrom gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def run_research():\n    query = \"왜 엔비디아 주식이 오르는가?\"\n    researcher = GPTResearcher(query=query, report_type=\"research_report\")\n    research_result = await researcher.conduct_research()\n    report = await researcher.write_report()\n    print(report)\n\nif __name__ == \"__main__\":\n    asyncio.run(run_research())\n</code></pre>\n<!-- /wp:code --></div>\n<!-- /wp:group -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.4. Docker를 이용한 설치 및 실행 (Installation and Execution with Docker)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker를 사용하여 GPT-Researcher를 컨테이너화된 환경에서 실행할 수 있습니다. Docker 지원은 배포 및 환경 관리에 있어 상당한 이점을 제공합니다. 모든 의존성과 구성을 캡슐화하여 \"내 컴퓨터에서는 잘 작동하는데...\"와 같은 문제를 제거하고, 다양한 운영 체제나 프로덕션 환경에서 설정을 간소화합니다. 이는 특히 시스템 수준 라이브러리 의존성으로 인해 어려움을 겪을 수 있는 사용자에게 설치 마찰을 줄여줍니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Docker 설치:</strong> 시스템에 Docker가 설치되어 있는지 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>.env 파일 구성:</strong> .env.example 파일을 .env로 복사하고, 필요한 API 키를 추가합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>원치 않는 서비스 주석 처리:</strong> docker-compose 파일 내에서 Docker로 실행하고 싶지 않은 서비스를 주석 처리합니다. 이 기능은 모듈식 설계를 의미하며, 사용자가 필요한 구성 요소만 실행하여 리소스 사용을 최적화할 수 있도록 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker Compose 빌드 및 실행:</strong> 다음 명령어 중 하나를 사용하여 애플리케이션을 빌드하고 실행합니다.<br>docker-compose up --build<br># 또는<br>docker compose up --build<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>접속:</strong> 기본적으로 이 Docker 흐름은 두 가지 프로세스를 시작합니다: localhost:8000의 Python 서버와 localhost:3000의 React 앱. localhost:3000에 접속하여 연구를 시작할 수 있습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.5. 가상 환경 또는 Poetry 사용 (Using Virtual Environment or Poetry)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>프로젝트별 의존성의 깔끔한 분리를 위해 가상 환경이나 Poetry 사용이 권장됩니다. 이는 시스템 전체 패키지와의 충돌을 방지하고 프로젝트 수명 주기 전반에 걸쳐 더 간단한 의존성 관리를 가능하게 합니다. Poetry 셸을 활성화하는 것은 올바른 버전의 의존성이 사용되고 효율적인 개발 및 테스트에 도움이 되는 제어된 환경을 제공하므로 프로젝트 작업에 필수적입니다. 가상 환경 또는 Poetry 사용에 대한 명시적인 권장 사항은 단순한 설치 단계를 넘어 장기적인 프로젝트 건전성과 유지보수성을 위한 능동적인 조치입니다. 의존성을 격리함으로써 사용자는 동일한 컴퓨터에서 다른 프로젝트가 충돌하는 라이브러리 버전을 요구하는 \"의존성 지옥\"을 피할 수 있습니다. 이러한 선견지명은 강력한 개발 관행을 나타내며, 통합 및 지속적인 사용을 위한 도구에 있어 안정적이고 예측 가능한 개발 경험을 제공하는 것을 목표로 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>3. 사용 방법</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 웹 인터페이스를 통해 직관적으로 사용하거나, Python 스크립트를 통해 프로그래밍 방식으로 활용할 수 있습니다. 또한, 특정 소스나 로컬 문서를 기반으로 연구를 수행하는 등 다양한 고급 사용 시나리오를 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3.1. 웹 인터페이스를 통한 사용 (Using the Web Interface)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>서버를 실행한 후(http://localhost:8000 또는 Docker의 경우 http://localhost:3000 React 앱), 웹 브라우저를 통해 GPT-Researcher의 사용자 친화적인 웹 인터페이스에 접속할 수 있습니다. localhost:8000을 통해 접근 가능한 \"사용자 친화적인 웹 인터페이스\"의 제공은 순수 개발자 외의 사용자층으로 확장하기 위한 전략적 움직임입니다. PIP 패키지가 프로그래밍 방식의 통합을 지원하는 반면, 웹 인터페이스는 명령줄 작업이나 Python 스크립팅에 익숙하지 않은 연구원, 콘텐츠 제작자 또는 비즈니스 분석가도 GPT-Researcher에 접근할 수 있도록 하여 채택 잠재력을 극대화합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3.2. Python 스크립트를 통한 기본 사용 예시 (Basic Usage Examples via Python Script)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>PIP 패키지로 설치한 경우, Python 스크립트 내에서 GPTResearcher 클래스를 임포트하여 연구를 수행할 수 있습니다. GPTResearcher 인스턴스 생성, conduct_research(), write_report() 호출로 구성된 핵심 Python API는 고급 AI 기반 워크플로우를 구축하기 위한 기반입니다. 이는 단순히 보고서를 얻는 것을 넘어, \"보고서를 어떻게 활용하는가\"에 대한 문제입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>from gpt_researcher import GPTResearcher<br>import asyncio<br><br>async def get_report(query: str, report_type: str) -&gt; str:<br>&nbsp; &nbsp; # GPTResearcher 인스턴스 생성<br>&nbsp; &nbsp; # query: 연구할 주제<br>&nbsp; &nbsp; # report_type: 생성할 보고서의 유형 (예: \"research_report\", \"resource_report\", \"outline_report\", \"lesson_report\", \"custom_report\")<br>&nbsp; &nbsp; researcher = GPTResearcher(query=query, report_type=report_type)<br><br>&nbsp; &nbsp; # 연구 수행<br>&nbsp; &nbsp; research_result = await researcher.conduct_research()<br><br>&nbsp; &nbsp; # 보고서 작성<br>&nbsp; &nbsp; report = await researcher.write_report()<br>&nbsp; &nbsp; return report<br><br>if __name__ == \"__main__\":<br>&nbsp; &nbsp; # 예시 1: 일반 연구 보고서 생성<br>&nbsp; &nbsp; query_general = \"엔비디아 주식이 왜 오르는가?\"<br>&nbsp; &nbsp; report_type_general = \"research_report\"<br>&nbsp; &nbsp; print(f\"--- 일반 연구 보고서: {query_general} ---\")<br>&nbsp; &nbsp; report_general = asyncio.run(get_report(query_general, report_type_general))<br>&nbsp; &nbsp; print(report_general)<br><br>&nbsp; &nbsp; # 예시 2: 특정 주제에 대한 개요 보고서 생성<br>&nbsp; &nbsp; query_outline = \"인공지능의 최신 발전 동향\"<br>&nbsp; &nbsp; report_type_outline = \"outline_report\"<br>&nbsp; &nbsp; print(f\"\\n--- 개요 보고서: {query_outline} ---\")<br>&nbsp; &nbsp; report_outline = asyncio.run(get_report(query_outline, report_type_outline))<br>&nbsp; &nbsp; print(report_outline)<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>생성된 보고서는 뉴스 기사, 마케팅 콘텐츠, 이메일 템플릿, 뉴스레터 등 가치 있는 콘텐츠를 생성하기 위한 맥락으로 활용될 수 있습니다. 또한 코드 문서, 비즈니스 분석, 금융 정보 등에 대한 정보를 수집하는 데에도 사용될 수 있습니다. GPT-Researcher의 결과물이 이러한 다양한 콘텐츠를 생성하기 위한 맥락으로 활용될 수 있다는 명시적인 언급은 GPT-Researcher가 더 큰 AI 시스템 내에서 활성화 구성 요소로서의 역할을 수행함을 보여줍니다. 이는 독립형 연구를 넘어, 후속 생성형 AI 작업을 위한 중요한 데이터 보강 또는 지식 검색 계층 역할을 수행하여 그 가치를 확장합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3.3. 로컬 문서 기반 연구 (Research on Local Documents)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 PDF, 일반 텍스트, CSV, Excel, Markdown, PowerPoint, Word 문서를 포함한 로컬 문서를 기반으로 연구 작업을 지원합니다. 이 기능은 GPT-Researcher의 유용성을 순수 웹 기반 에이전트에서 조직의 내부 지식 기반을 활용할 수 있는 도구로 크게 확장합니다. 이는 민감하거나 독점적인 정보가 공개 인터넷에 노출될 수 없는 기업 애플리케이션에 매우 중요합니다. 이는 GPT-Researcher를 강력한 내부 RAG(Retrieval-Augmented Generation) 시스템으로 변모시켜, 기업이 자체 비공개 데이터를 기반으로 보고서, 분석 또는 콘텐츠를 생성할 수 있도록 함으로써 내부 효율성과 지식 관리를 향상시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>DOC_PATH 환경 변수 설정:</strong> 문서가 있는 폴더를 가리키도록 DOC_PATH 환경 변수를 추가합니다.<br>export DOC_PATH=\"./my-docs\" # 예시: 내 문서 폴더 경로<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>소스 선택:</strong></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>localhost:8000에서 프론트엔드 앱을 사용하는 경우, \"Report Source\" 드롭다운 옵션에서 \"My Documents\"를 선택합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>PIP 패키지로 GPT-Researcher를 실행하는 경우, GPTResearcher 클래스를 인스턴스화할 때 report_source 인수를 \"local\"로 전달합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3.4. 특정 소스 기반 연구 (Research on Specific Sources)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>사용자는 URL 목록을 제공하여 GPT-Researcher가 지정된 소스에서만 연구를 수행하도록 지시할 수 있습니다. source_urls를 지정할 수 있는 기능은 연구 프로세스에 대한 중요한 수준의 제어를 제공합니다. 이는 GPT-Researcher가 해결하고자 하는 핵심 문제 중 하나인 \"선택적인 웹 소스는 연구 작업에 편향을 도입할 수 있습니다\" 를 해결합니다. 사용자가 소스를 큐레이션할 수 있도록 함으로써, 편향을 적극적으로 완화하고, 권위 있는 도메인에 집중하거나, 특정 관점에 대한 비교 분석을 수행할 수 있습니다. 이 기능은 대상 연구, 학술적 무결성 또는 알려진 소스에서 정보를 검증할 때 매우 유용하며, 생성된 보고서의 신뢰성과 관련성을 향상시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>from gpt_researcher import GPTResearcher<br>import asyncio<br><br>async def get_report_from_sources(query: str, report_type: str, sources: list) -&gt; str:<br>&nbsp; &nbsp; researcher = GPTResearcher(query=query, report_type=report_type, source_urls=sources)<br>&nbsp; &nbsp; await researcher.conduct_research()<br>&nbsp; &nbsp; report = await researcher.write_report()<br>&nbsp; &nbsp; return report<br><br>if __name__ == \"__main__\":<br>&nbsp; &nbsp; query = \"인공지능의 최신 발전 동향은 무엇인가?\"<br>&nbsp; &nbsp; report_type = \"research_report\"<br>&nbsp; &nbsp; # 위키피디아와 IBM Watson AI 페이지에서만 연구 수행<br>&nbsp; &nbsp; sources = [\"https://ko.wikipedia.org/wiki/인공지능\", \"https://www.ibm.com/kr-ko/watson/ai\"]<br>&nbsp; &nbsp; print(f\"--- 특정 소스 기반 연구 보고서: {query} (소스: {sources}) ---\")<br>&nbsp; &nbsp; report_specific_sources = asyncio.run(get_report_from_sources(query, report_type, sources))<br>&nbsp; &nbsp; print(report_specific_sources)<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3.5. 사용자 정의 프롬프트 및 보고서 유형 (Custom Prompts and Report Types)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>사용자는 query 인수로 사용자 정의 프롬프트를 전달하고 report_type을 \"custom_report\"로 설정하여 연구 방향을 안내하고 보고서 레이아웃을 맞춤화할 수 있습니다. 사용자 정의 query와 결합된 custom_report 유형은 보고서의 형태를 구성하는 데 있어 탁월한 유연성을 제공합니다. 이를 통해 사용자는 미리 정의된 보고서 형식을 넘어 연구의 정확한 범위, 어조 및 구조를 지시할 수 있습니다. 이는 틈새 애플리케이션, 특정 학술적 요구 사항(예시에서 언급된 APA 형식), 또는 매우 구체적인 출력 특성을 요구하는 콘텐츠 생성 파이프라인에 GPT-Researcher를 통합할 때 특히 유용합니다. 이 기능은 사용자가 연구 에이전트를 진정으로 \"맞춤 제작\"할 수 있도록 하여, 개요에서 약속된 사용자 정의 가능성을 충족시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>from gpt_researcher import GPTResearcher<br>import asyncio<br><br>async def get_custom_report(prompt: str, report_type: str) -&gt; str:<br>&nbsp; &nbsp; researcher = GPTResearcher(query=prompt, report_type=report_type)<br>&nbsp; &nbsp; await researcher.conduct_research()<br>&nbsp; &nbsp; report = await researcher.write_report()<br>&nbsp; &nbsp; return report<br><br>if __name__ == \"__main__\":<br>&nbsp; &nbsp; report_type = \"custom_report\"<br>&nbsp; &nbsp; prompt = \"인공지능의 최신 발전 동향을 연구하고, APA 형식으로 소스를 포함한 상세 보고서를 제공하시오.\"<br>&nbsp; &nbsp; print(f\"--- 사용자 정의 프롬프트 보고서: {prompt} ---\")<br>&nbsp; &nbsp; report_custom_prompt = asyncio.run(get_custom_report(prompt=prompt, report_type=report_type))<br>&nbsp; &nbsp; print(report_custom_prompt)<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>4. 고급 설정 및 사용자 정의</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 config.py 파일을 통해 광범위한 사용자 정의 옵션을 제공하며, 이를 통해 LLM, 검색 엔진, 보고서 형식, 연구 깊이 등을 세밀하게 조정할 수 있습니다. 외부 JSON 설정 파일을 사용하여 이러한 설정을 관리하는 것도 가능합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.1. config.py 파일 이해 (Understanding config.py)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>config.py 파일은 GPT-Researcher의 동작을 제어하는 다양한 매개변수를 포함하고 있으며, 이를 수정하여 에이전트의 성능, 품질 및 출력을 최적화할 수 있습니다. 광범위한 사용자 정의를 위한 중앙 집중식 config.py 파일의 존재는 유지보수 가능하고 확장 가능한 소프트웨어의 핵심 설계 패턴입니다. 이는 운영 매개변수에 대한 단일 진실 소스를 제공하여, 다양한 실행이나 환경에서 연구 설정을 관리하고 재현하기 쉽게 만듭니다. 이 접근 방식은 복잡한 다중 에이전트 시스템을 다룰 때 분산된 구성보다 우수하며, 일관성을 보장하고 디버깅을 간소화합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.2. LLM 및 검색 엔진 설정 (LLM and Retriever Configuration)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 다양한 LLM 공급자와 검색 엔진을 지원하며, 이를 config.py 파일에서 설정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>LLM 공급자 및 모델:</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>llm_provider: 기본값은 \"openai\"입니다. 다른 Langchain 지원 LLM으로 변경할 수 있습니다 (예: \"huggingface\", \"cohere\").</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>fast_llm_model: 기본값은 \"gpt-3.5-turbo\"입니다. 빠르고 덜 복잡한 작업에 사용됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>smart_llm_model: 기본값은 \"gpt-4o\"입니다. 더 복잡하고 심층적인 작업에 사용됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>시스템은 gpt-3.5-turbo 및 gpt-4-turbo (128K 컨텍스트)를 필요할 때만 사용하여 비용을 최적화하도록 설계되었습니다. 평균 연구 작업은 약 0.1달러의 비용이 들고 약 3분 정도 소요됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>검색 엔진 (Retriever):</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>retriever: 기본값은 \"tavily\"입니다. duckduckgo, googleAPI, googleSerp, searx, bing 등으로 변경할 수 있습니다. 다른 공급자는 API 키를 요구할 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>llm_provider, fast_llm_model, smart_llm_model, retriever를 구성할 수 있는 기능은 단순히 선택의 폭을 넓히는 것을 넘어 전략적 유연성과 비용-성능 최적화를 의미합니다. \"빠른\" 작업에 gpt-3.5-turbo를, \"스마트한\" 작업에 gpt-4o를 기본으로 사용하는 것은 명시적인 비용 최적화 전략을 보여줍니다. 이 계층적 모델 사용은 사용자가 비용과 품질의 균형을 맞출 수 있도록 하여, 덜 중요한 작업에는 저렴한 모델을, 복잡하고 심층적인 연구에는 더 강력하고 비용이 많이 드는 모델을 선택할 수 있게 합니다. 마찬가지로, 검색 엔진을 전환하는 것은 특정 검색 요구 사항, 지역 가용성 또는 비용 고려 사항에 대한 적응을 가능하게 합니다. 이러한 설계 선택은 AI 리소스 관리에 대한 실용적인 접근 방식을 강조합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.3. 보고서 형식, 단어 수, 연구 깊이 조정 (Adjusting Report Format, Word Count, Research Depth)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>사용자는 config.py 파일을 통해 보고서의 출력 특성을 세밀하게 제어할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>report_format: 기본값은 \"apa\"입니다. 다양한 보고서 형식에 맞게 조정할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>total_words: 생성될 보고서의 총 단어 수를 제어합니다. 기본값은 1000입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>max_iterations: 연구 프로세스의 깊이를 제어합니다. 기본값은 1입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이러한 매개변수들은 보고서의 출력 특성에 대한 세분화된 제어를 제공합니다. APA 형식을 지정할 수 있다는 것은 특정 형식 요구 사항이 있는 학술 또는 전문 사용자를 충족시킵니다. total_words를 조정하면 간결한 요약 또는 광범위한 심층 분석이 가능합니다. max_iterations를 수정하면 연구의 깊이와 철저함에 직접적인 영향을 미쳐, 사용자가 속도와 포괄성 사이에서 균형을 맞출 수 있습니다. 이러한 수준의 제어는 생성된 보고서가 일반적이지 않고 다양한 사용자 요구 사항 및 사용 사례(빠른 개요부터 포괄적인 학술 논문까지)에 정확하게 부합하도록 보장합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.4. 외부 JSON 설정 파일 사용 (Using External JSON Configuration Files)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>config.py 파일을 직접 편집하는 대신, 외부 JSON 설정 파일을 사용하여 구성을 제공할 수 있습니다. GPTResearcher 클래스를 초기화할 때 config_file 매개변수에 JSON 파일의 경로를 전달합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>researcher = GPTResearcher(query=query, report_type=report_type, config_path=\"path/to/your/config.json\")<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>외부 JSON 구성 파일을 사용할 수 있는 옵션은 config.py를 직접 편집하는 것보다 훨씬 더 큰 유연성을 제공합니다. 이를 통해 구성의 동적 로딩, 다양한 설정의 쉬운 A/B 테스트, 그리고 핵심 프로젝트 파일을 수정하지 않고도 버전 제어 시스템(예: Git)과의 원활한 통합이 가능합니다. 복잡한 배포나 협업 환경에서 이러한 구성의 외부화는 더 나은 관리, 재현성 및 유연성을 촉진하여 사용자가 코드 변경 없이 다른 운영 프로필 간에 전환할 수 있도록 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.5. 표: 주요 설정 매개변수</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>다음 표는 GPT-Researcher의 주요 설정 매개변수와 그 목적, 기본값, 그리고 가능한 옵션을 요약하여 보여줍니다. 이 표는 config.py 파일 에 포함된 수많은 매개변수들을 사용자에게 명확하고 간결하게 제시합니다. 이 매개변수들은 GPT-Researcher의 동작, 품질 및 비용을 직접적으로 제어합니다. 표는 각 매개변수의 목적, 기본값, 그리고 가능한 옵션/설명을 한눈에 볼 수 있는 빠른 참조를 제공합니다. 이러한 구조화된 프레젠테이션은 텍스트 설명보다 구성 세부 사항을 전달하는 데 훨씬 더 효과적이며, 사용자가 코드나 긴 설명을 일일이 분석할 필요 없이 자신의 특정 요구 사항과 관련된 설정을 신속하게 식별하고 조정할 수 있도록 합니다. 이는 사용성을 향상시키고 사용자 정의 프로세스를 가속화합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>매개변수 이름</th><th>목적</th><th>기본값</th><th>가능한 옵션/설명</th></tr></thead><tbody><tr><td>OPENAI_API_KEY, TAVILY_API_KEY</td><td>LLM 및 검색 엔진 인증</td><td>{Your API Key}</td><td>환경 변수 또는 .env 파일에 설정</td></tr><tr><td>llm_provider</td><td>LLM 공급자 지정</td><td>\"openai\"</td><td>Langchain 지원 LLM (예: \"huggingface\", \"cohere\")</td></tr><tr><td>fast_llm_model</td><td>빠르고 덜 복잡한 작업용 LLM</td><td>\"gpt-3.5-turbo\"</td><td>다른 빠른 모델</td></tr><tr><td>smart_llm_model</td><td>복잡하고 심층적인 작업용 LLM</td><td>\"gpt-4o\"</td><td>다른 스마트 모델</td></tr><tr><td>retriever</td><td>실시간 온라인 정보 검색 엔진</td><td>\"tavily\"</td><td>\"duckduckgo\", \"googleAPI\", \"googleSerp\", \"searx\", \"bing\" 등 (일부 API 키 필요)</td></tr><tr><td>report_format</td><td>생성될 보고서의 형식</td><td>\"apa\"</td><td>사용자 정의 가능한 보고서 형식</td></tr><tr><td>total_words</td><td>보고서의 총 단어 수</td><td>1000</td><td>원하는 단어 수로 조정</td></tr><tr><td>max_iterations</td><td>연구 프로세스의 깊이</td><td>1</td><td>더 깊은 연구를 위해 조정</td></tr><tr><td>fast_token_limit</td><td>빠른 LLM의 토큰 제한</td><td>2000</td><td>토큰 사용량 관리</td></tr><tr><td>smart_token_limit</td><td>스마트 LLM의 토큰 제한</td><td>4000</td><td>토큰 사용량 관리</td></tr><tr><td>summary_token_limit</td><td>요약 토큰 제한</td><td>700</td><td>요약 토큰 사용량 관리</td></tr><tr><td>temperature</td><td>LLM 출력의 무작위성 제어</td><td>0.6</td><td>창의성 조절 (높을수록 무작위)</td></tr><tr><td>user_agent</td><td>웹 브라우징 요청을 위한 사용자 에이전트 문자열</td><td>\"Mozilla/5.0 (...)\"</td><td>필요에 따라 변경</td></tr><tr><td>memory_backend</td><td>에이전트 메모리 저장 방식</td><td>\"local\"</td><td>(현재 \"local\"만 지원)</td></tr><tr><td>browse_chunk_max_length</td><td>웹 콘텐츠 브라우징 시 청크의 최대 길이</td><td>8192</td><td>필요에 따라 조정</td></tr><tr><td>config_file</td><td>외부 JSON 설정 파일 경로</td><td>None</td><td>사용자 정의 JSON 파일 경로</td></tr><tr><td>source_urls</td><td>연구할 특정 URL 목록</td><td>None</td><td>URL 리스트 (예: [\"url1\", \"url2\"])</td></tr><tr><td>report_type (custom)</td><td>사용자 정의 보고서 유형</td><td>\"research_report\"</td><td>\"custom_report\"로 설정 시 query가 프롬프트로 활용</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>5. 활용 예시 및 시나리오</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 다양한 실용적인 시나리오에서 사용될 수 있으며, 여러 애플리케이션에 통합될 수 있는 자율 에이전트입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>5.1. 독립형 에이전트로서의 활용 (Utilizing as a Standalone Agent)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 기존의 어떤 Python 프로젝트에도 독립형 에이전트로 임포트되어 연구 보고서를 생성할 수 있습니다. 예를 들어, \"최근 버닝맨 홍수에서 무슨 일이 일어났는가?\"와 같은 쿼리에 대한 연구 보고서를 가져올 수 있습니다. 생성된 보고서는 뉴스 기사, 마케팅 콘텐츠, 이메일 템플릿, 뉴스레터 등 가치 있는 콘텐츠를 생성하기 위한 맥락으로 활용될 수 있습니다. 또한 코드 문서, 비즈니스 분석, 금융 정보 등 사실적이고 고품질의 실시간 정보가 필요한 복잡한 작업을 완료하기 위한 정보를 수집하는 데에도 사용될 수 있습니다. GPT-Researcher의 출력을 다른 생성 작업의 입력으로 사용하는 것에 대한 강조는 GPT-Researcher가 더 큰 콘텐츠 생성 및 지식 관리 시스템에서 핵심 구성 요소로서의 역할을 수행함을 강조합니다. 이는 단순한 보고서 생성기가 아니라 \"지식 기반 구축자\" 또는 \"콘텐츠 공급자\"로서, 기업이 콘텐츠 생성 워크플로우를 자동화하거나 증강하려는 경우 중요한 미들웨어로 자리매김합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>5.2. 다중 에이전트 프레임워크 통합 (Integration with Multi-Agent Frameworks)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 복잡한 작업을 처리하기 위해 자율 에이전트들이 협력하는 다중 에이전트 프레임워크에 통합될 수 있습니다. 특히 심층 연구가 필요한 작업에 유용합니다. LangGraph와 통합된 편집 에이전트 팀은 주어진 작업에 대한 연구 보고서를 완성하기 위해 협력하는 대표적인 예시입니다. 이 팀은 총괄 편집자가 연구 프로세스를 감독하고, 연구원이 심층 연구를 수행하고 초안을 작성하며, 작성자가 최종 보고서를 편집하고 작성합니다. 검토자가 초안의 정확성을 검증하고 피드백을 제공하며, 수정자가 이 피드백을 기반으로 초안을 수정합니다. 마지막으로 출판자가 최종 보고서를 다양한 형식으로 출판합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이러한 접근 방식은 금융, 비즈니스 분석, 의료, 마케팅, 법률 등 다양한 분야에 적용될 수 있습니다. 예를 들어, 코딩 작업을 담당하는 코딩 에이전트는 기술 설계를 작성하기 전에 최신 및 관련 API 문서와 모범 사례를 큐레이션하기 위해 연구 에이전트(GPT-Researcher)를 통합할 수 있습니다. 다중 에이전트 프레임워크, 특히 \"편집 에이전트 팀\"은 AI 시스템이 인간 조직 구조와 워크플로우를 모방하도록 어떻게 진화하고 있는지를 보여주는 심오한 예시입니다. 이는 단순히 병렬 처리가 아니라, 전문화된 역할과 순차적이고 반복적인 프로세스를 통한 노동 분업입니다. 이 설계 선택은 편향되지 않은 연구 보고서와 같은 복잡하고 고품질의 결과물이 인간 팀처럼 내부 검증을 포함하는 협력적이고 다단계적인 프로세스를 통해 가장 잘 달성될 수 있다는 믿음을 내포합니다. 이는 AI 에이전트가 단순히 작업을 수행하는 것을 넘어, 단일 AI의 범위를 넘어서는 문제를 해결하기 위해 \"디지털 조직\"을 형성하는 미래를 시사합니다. 다양한 분야에 걸친 적용은 복잡한 도메인별 문제 해결을 위한 광범위한 유용성을 강조합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>5.3. 웹 프레임워크 통합 (Integration with Web Frameworks: FastAPI, Flask)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 FastAPI 및 Flask와 같은 인기 있는 웹 프레임워크와 통합될 수 있습니다. FastAPI 예시는 query와 report_type을 받아 생성된 보고서를 반환하는 엔드포인트(/report/{report_type})를 생성하는 방법을 보여줍니다. Flask와의 유사한 통합도 가능하며, 이를 위해서는 flask[async] 설치가 필요합니다. FastAPI 및 Flask와 같은 인기 있는 웹 프레임워크와의 통합은 GPT-Researcher를 로컬 도구에서 배포 가능한 서비스로 전환하는 데 중요합니다. 이를 통해 조직은 API를 통해 연구 기능을 노출하여 다른 애플리케이션이나 사용자가 프로그래밍 방식으로 연구 보고서를 요청할 수 있도록 합니다. 이는 \"서비스형 연구(Research-as-a-Service)\"를 향한 단계로, 기업 전체 또는 상업적 제공을 위해 그 기능에 대한 확장 가능한 접근을 용이하게 합니다. 이는 GPT-Researcher를 데스크톱 유틸리티에서 더 크고 분산된 시스템의 백엔드 구성 요소로 전환시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>6. 문제 해결</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher를 사용하는 동안 발생할 수 있는 일반적인 문제와 그 해결책을 이해하는 것은 중요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.1. 일반적인 문제 및 해결책 (Common Issues and Solutions)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>문제가 발생하면 먼저 Discord 커뮤니티 에서 해결된 문제를 확인하거나 도움을 요청하는 것이 좋습니다. 이는 오픈 소스 프로젝트의 특성과 커뮤니티 기반 지원 모델을 강조합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>\"Model: gpt-4 does not exist\" 오류:</strong> 이 오류는 gpt-4를 사용할 권한이 아직 없을 수 있음을 나타냅니다. OpenAI는 7월 말까지 광범위하게 사용 가능할 것으로 예상합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"Error processing the url\" (Selenium 문제):</strong> GPT-Researcher는 웹 스크래핑에 Selenium을 사용하며, 일부 사이트는 스크래핑에 실패할 수 있습니다. 애플리케이션을 다시 시작하고 다시 시도하십시오. 이 문제는 웹 스크래핑의 본질적인 어려움과 외부 브라우저 구성 요소에 대한 의존성을 지적하며, 사용자가 이러한 외부 요인을 관리해야 함을 의미합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Chrome 버전 문제:</strong> 호환되지 않는 Chrome 브라우저 및 Chromedriver 버전은 문제를 일으킬 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Chrome 웹 브라우저를 다운그레이드하려면 <a href=\"https://www.slimjet.com/chrome/google-chrome-old-version.php\">slimjet</a>을 방문하여 운영 체제와 호환되는 이전 Chrome 버전을 찾으십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>충돌을 피하기 위해 이전 버전을 설치하기 전에 현재 Chrome 버전을 제거하십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>가장 중요하게, 다운그레이드하는 Chrome 버전이 공식 <a href=\"https://developer.chrome.com/docs/chromedriver/downloads\">chromedriver 웹사이트</a>에서 호환되는 Chromedriver를 사용할 수 있는지 확인하십시오.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.2. 특정 오류 메시지 해결 (Resolving Specific Error Messages)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>\"Cannot load library ‘gobject-2.0-0’\" 오류:</strong> 이 문제는 연구 보고서에서 PDF를 생성하는 데 사용되는 WeasyPrint 라이브러리와 관련이 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://doc.courtbouillon.org/weasyprint/stable/first_steps.html\">https://doc.courtbouillon.org/weasyprint/stable/first_steps.html</a>의 가이드를 따르거나 패키지를 수동으로 설치하여 해결하십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>MacOS의 경우:</strong> brew install glib gobject-introspection.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Linux의 경우:</strong> sudo apt install libglib2.0-dev.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"Cannot load library ‘pango’\" 오류:</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>MacOS의 경우:</strong> brew install pango.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Linux의 경우:</strong> sudo apt install libpango-1.0-0.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이러한 특정 문제 해결 단계는 시스템 수준 라이브러리, 특히 PDF 생성을 위해 사용되는 WeasyPrint에 대한 의존성을 보여줍니다. 이는 GPT-Researcher가 Python 기반이지만, 풍부한 출력 기능(예: PDF 내보내기)이 기본 OS 구성 요소에 의존한다는 것을 나타냅니다. 이는 크로스 플랫폼 애플리케이션에서 흔히 발생하는 문제이며, 이러한 외부 라이브러리에 대한 상세한 OS별 설치 지침이 필요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.3. Mac M 칩 사용자 워크어라운드 (Workaround for Mac M Chip Users)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>위 해결책이 작동하지 않는 경우, 다음 단계를 따르십시오:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>brew를 가리키는 Python 3.11의 새 버전을 설치합니다: brew install python@3.11.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>필요한 라이브러리를 설치합니다: brew install pango glib gobject-introspection.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>필요한 GPT Researcher Python 패키지를 설치합니다: pip3.11 install -r requirements.txt.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Python 3.11(brew 사용)으로 앱을 실행합니다: python3.11 -m uvicorn main:app --reload.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>Mac M 칩 사용자를 위한 전용 해결책은 새로운 하드웨어 아키텍처와 기존 소프트웨어 생태계와의 호환성으로 인해 발생하는 문제에 대한 직접적인 대응입니다. 이는 광범위한 플랫폼 지원과 일반적인 사용자 문제점에 대한 개발자의 대응성을 보여줍니다. 이는 Python의 크로스 플랫폼 특성에도 불구하고, 기본 네이티브 의존성(예: WeasyPrint 또는 특정 Python 빌드)이 여전히 새로운 칩셋에서 문제를 일으킬 수 있으며, 최적의 성능을 위해 특정 지침이 필요함을 강조합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.4. 표: 일반적인 문제 해결 가이드</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>문제 해결은 모든 기술 매뉴얼의 중요한 부분입니다. 다음 표는 일반적인 문제와 그 해결책을 요약하여 사용자에게 문제를 진단하고 해결하는 데 효율적이고 사용자 친화적인 방법을 제공합니다. 사용자는 긴 문단을 검색하는 대신, 특정 오류나 증상을 빠르게 찾아 해당 해결책을 찾을 수 있습니다. 이러한 구조화된 접근 방식은 설정 및 작동 중 사용자 경험을 크게 향상시키고, 좌절감을 줄이며, 문제 해결 시간을 단축합니다. 이는 여러 외부 의존성에 의존하는 도구에 있어 가장 중요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>문제/오류 메시지</th><th>증상</th><th>해결책/워크어라운드</th><th>관련 스니펫 ID</th></tr></thead><tbody><tr><td>일반적인 문제</td><td>특정 오류 메시지 없이 작동하지 않음</td><td>Discord 커뮤니티 확인</td><td></td></tr><tr><td>\"Model: gpt-4 does not exist\"</td><td>gpt-4 모델 사용 불가</td><td>gpt-4 사용 권한 확인 (OpenAI 정책)</td><td></td></tr><tr><td>\"Cannot load library ‘gobject-2.0-0’\"</td><td>PDF 생성 실패</td><td>WeasyPrint 가이드 따르기; MacOS: brew install glib gobject-introspection; Linux: sudo apt install libglib2.0-dev</td><td></td></tr><tr><td>\"Cannot load library ‘pango’\"</td><td>PDF 생성 실패</td><td>MacOS: brew install pango; Linux: sudo apt install libpango-1.0-0</td><td></td></tr><tr><td>\"Error processing the url\"</td><td>웹 스크래핑 실패</td><td>애플리케이션 재시작 후 재시도</td><td></td></tr><tr><td>Chrome/Chromedriver 버전 불일치</td><td>웹 스크래핑 실패, 브라우저 관련 오류</td><td>Chrome 다운그레이드 및 호환되는 Chromedriver 설치</td><td></td></tr><tr><td>Mac M 칩 성능/설치 문제</td><td>특정 라이브러리 로드 오류 또는 비정상 작동</td><td>brew로 Python 3.11 재설치, 필요한 라이브러리 설치, pip3.11 및 python3.11로 실행</td><td></td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>7. 결론</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 상세하고, 사실적이며, 편향되지 않은 연구 보고서를 인용과 함께 제공하도록 설계된 혁신적인 오픈 소스 심층 연구 에이전트입니다. 이는 정보의 오용 및 LLM의 한계와 같은 현대 정보 환경의 주요 과제를 해결합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>본 매뉴얼에서 살펴보았듯이, GPT-Researcher는 표준 설치, PIP 패키지, Docker를 포함한 유연한 설치 옵션을 제공하며, LLM, 검색 엔진, 보고서 형식, 연구 깊이 등 광범위한 사용자 정의가 가능합니다. 특히, Chief Editor, Researcher, Editor, Reviewer, Revisor, Writer, Publisher로 구성된 다중 에이전트 아키텍처는 인간의 편집 프로세스를 모방하여 보고서의 신뢰성과 품질을 크게 향상시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>로컬 문서나 특정 웹 소스를 기반으로 연구를 수행하는 기능은 GPT-Researcher의 적용 범위를 확장하며, 독립형 에이전트로서의 활용부터 복잡한 AI 프레임워크와의 통합, 웹 프레임워크를 통한 서비스 제공까지 다양한 시나리오에서 그 가치를 발휘합니다. 또한, 발생할 수 있는 일반적인 문제에 대한 포괄적인 문제 해결 가이드는 사용자가 원활하게 도구를 사용할 수 있도록 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>GPT-Researcher는 더 신뢰할 수 있고 정교한 AI 기반 정보 합성을 향한 중요한 발걸음을 나타냅니다. 고급 LLM 기능과 구조화된 연구 방법론(다중 에이전트 프레임워크, RAG 원칙) 및 강력한 웹 스크래핑을 결합함으로써, 단순한 생성형 AI를 넘어 검증 가능한 고품질 연구를 제공합니다. 배포 및 사용자 정의의 유연성은 개인과 조직이 중요한 정보 수집, 콘텐츠 생성 및 지식 관리를 위해 AI를 활용하려는 경우 다재다능한 도구로 자리매김하며, 궁극적으로 점점 더 복잡해지는 정보 환경에서 사용자에게 정확하고 편향되지 않은 통찰력을 제공합니다. 이 도구는 단순히 <em>무엇을</em> 연구하는지가 아니라, <em>어떻게</em> 연구하는지에 중점을 두어 정확성과 검증 가능성을 강조함으로써 AI 기반 정보 합성의 패러다임 전환을 이끌어낼 것입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>참고 자료</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>1. assafelovic/gpt-researcher: LLM based autonomous agent ... - GitHub, https://github.com/assafelovic/gpt-researcher 2. GPT Researcher - Tavily Docs, https://docs.tavily.com/examples/open-sources/gpt-researcher</p>\n<!-- /wp:paragraph -->','GPT-Researcher 설치','','publish','open','closed','','gpt-researcher-%ec%84%a4%ec%b9%98','','','2025-10-13 13:41:16','2025-10-13 04:41:16','',0,'http://kbsi',0,'docs','',0),
(14,1,'2025-10-13 13:41:16','2025-10-13 04:41:16','<!-- wp:paragraph -->\n<p>Ubuntu는 <strong>데비안(Debian)</strong> 기반의 무료 오픈 소스 운영체제(OS)입니다. 남아프리카 공화국의 캐노니컬(Canonical) 사가 개발하고 있으며, \"Ubuntu\"라는 이름은 아프리카 줄루어와 코사어로 \"다른 사람을 위한 인간성\"이라는 뜻을 가지고 있습니다. 이는 우분투 프로젝트의 철학인 \"소프트웨어는 모든 사람이 무료로 사용할 수 있어야 한다\"는 정신을 반영합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>PC, 서버, 클라우드, 사물 인터넷(IoT) 장치 등 다양한 환경에서 사용되며, 특히 개인 사용자들에게 가장 널리 사용되는 리눅스 배포판 중 하나입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Ubuntu의 주요 특징</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>오픈 소스 및 무료</strong>: 우분투는 GNU GPL(General Public License)에 따라 배포되는 오픈 소스 소프트웨어이며, 누구나 무료로 다운로드, 설치, 사용, 수정 및 재배포할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>사용자 친화적 인터페이스</strong>: 초기 리눅스 배포판들이 터미널 사용에 익숙한 고급 사용자에게 초점을 맞췄던 것과 달리, 우분투는 일반 사용자가 쉽게 접근하고 사용할 수 있도록 그래픽 사용자 인터페이스(GUI)를 강조합니다. 기본 데스크톱 환경은 GNOME(그놈)이며, 다양한 사용자 요구에 맞춰 Kubuntu(KDE), Xubuntu(Xfce), Lubuntu(LXQt) 등 다양한 데스크톱 환경을 가진 파생 버전도 제공됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>광범위한 소프트웨어 생태계</strong>: <code>apt</code> (Advanced Package Tool) 시스템을 통해 수많은 소프트웨어 패키지를 쉽게 설치하고 관리할 수 있습니다. 또한 Snap, Flatpak과 같은 범용 패키징 시스템도 지원하여 다양한 애플리케이션을 사용할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>강력한 커뮤니티 지원</strong>: 전 세계적으로 매우 활발하고 큰 사용자 커뮤니티를 가지고 있어, 문제 발생 시 온라인 포럼, 문서, 튜토리얼 등을 통해 쉽게 도움을 받을 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>보안성</strong>: 리눅스 기반으로 설계되어 윈도우에 비해 바이러스 및 악성코드로부터 상대적으로 안전합니다. 또한, 주기적인 보안 업데이트가 제공됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>정기적인 업데이트 및 장기 지원(LTS)</strong>: 6개월마다 새로운 버전이 출시되며, 2년마다 출시되는 LTS(Long Term Support) 버전은 5년간의 보안 업데이트 및 유지보수를 제공하여 안정적인 운영이 필요한 환경에 적합합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Ubuntu의 장점</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>무료 및 오픈 소스</strong>: 소프트웨어 구매 비용이 들지 않으며, 개발자들이 소스 코드를 자유롭게 검토하고 개선할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>높은 안정성 및 보안성</strong>: 리눅스 커널 기반으로 매우 안정적이며, 윈도우 대비 바이러스나 악성코드 공격에 강합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>다양한 활용성</strong>: 개인용 데스크톱부터 웹 서버, 개발 환경, 클라우드, 임베디드 시스템에 이르기까지 폭넓게 활용됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>뛰어난 개발 환경</strong>: 파이썬, 자바, C++, Node.js 등 다양한 프로그래밍 언어 및 개발 도구를 쉽게 설치하고 사용할 수 있어 개발자들에게 매우 인기가 많습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>활발한 커뮤니티 지원</strong>: 문제 해결 및 정보 공유가 용이하여 초보자도 쉽게 접근할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>커스터마이징 용이</strong>: 사용자의 취향과 목적에 따라 시스템을 광범위하게 커스터마이징할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>리소스 효율성</strong>: 윈도우에 비해 상대적으로 적은 시스템 자원을 사용하여 오래된 하드웨어에서도 비교적 쾌적하게 작동할 수 있습니다 (특히 경량 데스크톱 환경 선택 시).</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Ubuntu의 단점</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>소프트웨어 호환성 제한</strong>: 일부 상용 소프트웨어(특히 게임, 전문 디자인/CAD 프로그램 등)는 윈도우나 macOS 전용으로 개발되어 우분투에서 바로 실행되지 않을 수 있습니다. Wine과 같은 호환성 계층을 사용하거나 가상 머신을 통해 해결하기도 하지만 완벽하지 않을 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>학습 곡선</strong>: 윈도우나 macOS에 익숙한 사용자에게는 초기 적응 기간이 필요합니다. 특히 터미널 명령어 사용에 익숙해지는 데 시간이 걸릴 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>하드웨어 호환성 문제</strong>: 드물게 일부 특정 하드웨어(특히 최신 또는 독점 드라이버가 필요한 경우)에 대한 드라이버 지원이 부족할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>게임 환경</strong>: 윈도우 대비 게임 선택의 폭이 좁고, 성능 최적화가 덜 된 경우가 많습니다. Steam과 Proton의 발전으로 나아지고 있지만, 여전히 윈도우가 게임 환경에서는 우위를 가집니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>일부 상용 서비스 제한</strong>: 일부 웹사이트나 온라인 서비스는 여전히 ActiveX나 특정 브라우저 플러그인을 요구하여 리눅스 환경에서 제대로 작동하지 않을 수 있습니다. (점차 줄어드는 추세)</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>종합적으로 볼 때, Ubuntu는 무료이면서도 강력하고 유연하며 안정적인 운영체제를 원하는 사용자에게 매우 훌륭한 선택지입니다. 특히 개발자, 서버 관리자, 그리고 비용 효율적인 솔루션을 찾는 개인 사용자들에게 큰 장점을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','Ubuntu (우분투)란 무엇인가?','','publish','open','closed','','ubuntu-%ec%9a%b0%eb%b6%84%ed%88%ac%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80','','','2025-10-13 13:41:16','2025-10-13 04:41:16','',0,'http://kbsi',0,'docs','',0),
(15,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>리눅스는 <strong>오픈 소스 유닉스 계열 운영체제(OS)</strong> 입니다. 1991년 핀란드의 컴퓨터 과학 학부생 리누스 토르발스(Linus Torvalds)가 개인 프로젝트로 개발한 <strong>리눅스 커널(Kernel)</strong> 에서 시작되었습니다. 여기서 \"리눅스\"라는 용어는 엄밀히 말해 <strong>커널</strong>만을 지칭하지만, 일반적으로는 리눅스 커널과 GNU 프로젝트의 다양한 소프트웨어(쉘, 라이브러리, 유틸리티 등)가 결합된 <strong>운영체제 전체</strong>를 의미합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>윈도우나 macOS와 같은 상업용 운영체제와 달리, 리눅스는 <strong>자유 소프트웨어(Free Software)</strong> 이며, 누구나 소스 코드를 자유롭게 확인하고, 수정하고, 배포할 수 있습니다. 이러한 특성 덕분에 전 세계 수많은 개발자와 기업들이 참여하여 끊임없이 발전하고 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">리눅스의 주요 특징</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>오픈 소스 (Open Source)</strong>: 가장 핵심적인 특징으로, 소스 코드가 공개되어 있어 누구나 자유롭게 사용, 수정, 배포가 가능합니다. 이는 투명성과 커뮤니티 협력을 통해 빠른 발전과 높은 보안성을 가능하게 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>유닉스 계열 (Unix-like)</strong>: 리눅스는 유닉스와 유사한 아키텍처와 명령 체계를 가지고 있습니다. 따라서 유닉스 시스템에 익숙한 사용자에게는 비교적 쉽게 접근할 수 있습니다. (엄밀히 말해 유닉스 코드를 기반으로 한 것이 아니라, 유닉스의 철학을 따르는 독립적인 구현체입니다.)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>다양한 배포판 (Distributions)</strong>: 리눅스 커널은 하나지만, 이를 기반으로 다양한 용도와 사용자 환경에 맞게 패키징된 수많은 \"배포판\"이 존재합니다. (예: Ubuntu, Fedora, Debian, CentOS, Red Hat Enterprise Linux, Arch Linux 등) 각 배포판은 특정 목적(예: 데스크톱, 서버, 클라우드, 임베디드)에 최적화되어 있거나, 사용자 친화적인 인터페이스를 제공하는 등 고유한 특징을 가집니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>멀티태스킹 (Multitasking) 및 다중 사용자 (Multi-user) 지원</strong>: 여러 작업을 동시에 실행할 수 있으며, 여러 사용자가 동시에 하나의 시스템에 로그인하여 작업할 수 있도록 설계되었습니다. 이는 서버 환경에서 매우 중요한 기능입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>강력한 네트워킹 기능</strong>: TCP/IP 프로토콜을 완벽하게 지원하며, 다양한 네트워크 서비스를 효율적으로 제공할 수 있어 서버 운영체제로 매우 널리 사용됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>안정성 및 신뢰성</strong>: 장시간 재부팅 없이 안정적으로 운영될 수 있으며, 시스템 충돌이 적습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>커스터마이징 및 유연성</strong>: 사용자가 원하는 대로 시스템의 거의 모든 부분을 커스터마이징하고 최적화할 수 있습니다. 데스크톱 환경(GNOME, KDE, Xfce 등)부터 커널 자체까지 폭넓은 설정이 가능합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>다양한 하드웨어 아키텍처 지원</strong>: x86, ARM 등 여러 프로세서 아키텍처에서 실행될 수 있어 서버, 데스크톱, 스마트폰(안드로이드), 임베디드 장치, 슈퍼컴퓨터 등 매우 넓은 범위의 기기에서 활용됩니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">리눅스의 장점</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>비용 효율성</strong>: 대부분의 리눅스 배포판은 무료로 제공되어 소프트웨어 라이선스 비용이 들지 않습니다. 이는 개인 사용자뿐만 아니라 기업에도 큰 경제적 이점을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>높은 안정성 및 신뢰성</strong>: 서버 운영 환경에서 매우 높은 가동 시간(Uptime)을 자랑하며, 시스템 충돌이 적어 안정적인 서비스 제공이 가능합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>뛰어난 보안성</strong>: 오픈 소스 특성상 수많은 개발자들이 코드를 검토하고 취약점을 빠르게 발견하고 수정합니다. 또한, 세분화된 사용자 권한 관리 시스템과 다양한 보안 도구를 제공하여 바이러스 및 악성코드로부터 상대적으로 안전합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>유연성과 커스터마이징</strong>: 사용자의 필요에 따라 시스템을 자유롭게 구성하고 최적화할 수 있습니다. 불필요한 기능은 제거하고 필요한 기능만 추가하여 경량화된 시스템을 구축할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>강력한 개발 환경</strong>: 파이썬, 자바, C++, Ruby 등 다양한 프로그래밍 언어 및 개발 도구를 설치하고 사용하기 용이하며, 개발자들이 선호하는 터미널 환경과 스크립팅 기능을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>방대한 소프트웨어 생태계</strong>: <code>apt</code>, <code>yum</code>, <code>dnf</code>와 같은 패키지 관리 시스템을 통해 수많은 오픈 소스 소프트웨어를 쉽게 설치하고 관리할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>활발한 커뮤니티 지원</strong>: 전 세계적으로 방대한 사용자 커뮤니티가 존재하여, 문제 발생 시 온라인 포럼, 문서, 튜토리얼 등을 통해 신속하게 도움을 받을 수 있습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">리눅스의 단점</h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>학습 곡선</strong>: 윈도우나 macOS에 익숙한 사용자에게는 초기 학습에 시간이 필요합니다. 특히 터미널(명령줄 인터페이스) 사용에 익숙해져야 하는 부분이 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>소프트웨어 호환성 제한</strong>: 일부 상용 소프트웨어(특히 최신 게임, 전문 그래픽/CAD/영상 편집 프로그램)는 윈도우나 macOS 전용으로 개발되어 리눅스에서 직접 실행되지 않거나, 호환성 계층(예: Wine)을 통해 실행하더라도 성능 저하나 기능 제한이 있을 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>하드웨어 드라이버 지원 부족</strong>: 드물게 특정 최신 하드웨어(특히 독점 드라이버가 필요한 그래픽 카드, 무선 랜 카드 등)에 대한 리눅스 드라이버가 미흡하거나 아예 없을 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>일부 사용자 경험의 비일관성</strong>: 다양한 데스크톱 환경과 배포판의 존재는 장점이자 단점이 될 수 있습니다. 사용자마다 선호하는 환경이 다르기 때문에, 어떤 경우에는 일관되지 않은 사용자 경험을 줄 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>기술 지원의 유료화</strong>: 오픈 소스 특성상 무료로 제공되는 리눅스 배포판은 공식적인 유료 기술 지원이 없는 경우가 많습니다. 상업용 배포판(예: Red Hat Enterprise Linux)은 유료 지원을 제공하지만, 이는 비용이 발생합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>결론적으로 리눅스는 안정성, 보안성, 유연성, 비용 효율성 면에서 매우 강력한 운영체제입니다. 특히 서버, 개발 환경, 클라우드 컴퓨팅 분야에서 압도적인 점유율을 자랑하며, 데스크톱 사용자에게도 점점 더 매력적인 대안이 되고 있습니다.</p>\n<!-- /wp:paragraph -->','리눅스 (Linux)란 무엇인가?','','publish','open','closed','','%eb%a6%ac%eb%88%85%ec%8a%a4-linux%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(16,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">개념</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>오픈 소스 소프트웨어(OSS)는 <strong>소스 코드가 공개되어 누구나 자유롭게 사용, 수정, 배포할 수 있도록 허용된 소프트웨어</strong>를 의미합니다. 이는 단순한 \'무료\' 소프트웨어(프리웨어)와는 다른 개념입니다. 프리웨어는 무료로 사용할 수 있지만 소스 코드가 공개되지 않아 사용자가 내부 작동 방식을 알거나 수정할 수 없습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>오픈 소스 소프트웨어는 특정 라이선스(예: GNU GPL, MIT, Apache 등)에 따라 배포되며, 이 라이선스는 사용자의 자유를 보장하는 동시에, 수정된 코드를 공개해야 한다거나 원작자를 명시해야 하는 등의 특정 조건을 포함할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>핵심적인 특징:</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>소스 코드 공개</strong>: 소프트웨어의 설계도라 할 수 있는 소스 코드가 일반에 공개되어 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>자유로운 사용</strong>: 누구나 소프트웨어를 다운로드하여 설치하고 사용할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>자유로운 수정 및 개선</strong>: 사용자는 소스 코드를 자신의 필요에 맞게 수정하거나 기능을 개선할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>자유로운 재배포</strong>: 수정된 버전이든 원본이든, 해당 라이선스 조건에 따라 다른 사람들에게 재배포할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>협업 및 커뮤니티</strong>: 전 세계의 개발자들이 협력하여 소프트웨어를 발전시키고, 문제 해결 및 기능 개선에 기여합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">AI 개발에 오픈 소스 소프트웨어가 갖는 장점</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>AI 기술은 빠르게 발전하고 있으며, 이 과정에서 오픈 소스 소프트웨어는 핵심적인 역할을 하고 있습니다. AI 개발에 오픈 소스가 갖는 주요 장점은 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>비용 절감 및 접근성 향상</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>무료 사용</strong>: 고가의 상업용 AI 프레임워크나 도구를 구매할 필요 없이 무료로 사용할 수 있어, 스타트업, 연구기관, 개인 개발자 등 자원 제약이 있는 곳에서도 AI 개발을 시작할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>진입 장벽 감소</strong>: AI 개발에 필요한 기본적인 도구와 라이브러리를 누구나 쉽게 다운로드하여 사용할 수 있어 AI 기술의 \"민주화\"에 기여합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>혁신 가속화 및 협업 증진</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>빠른 발전</strong>: 수많은 개발자가 동시에 코드에 기여하고 개선하며, 새로운 아이디어를 빠르게 통합할 수 있어 기술 발전 속도가 매우 빠릅니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>재사용성</strong>: 이미 검증된 오픈 소스 모델, 라이브러리, 프레임워크(예: TensorFlow, PyTorch, Hugging Face Transformers)를 활용하여 개발 시간을 단축하고, \"바퀴를 다시 발명\"할 필요 없이 혁신에 집중할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>글로벌 협업</strong>: 전 세계의 AI 전문가들이 서로의 코드를 검토하고, 버그를 수정하며, 새로운 기능을 추가하는 등 집단 지성을 통해 AI 기술의 완성도를 높입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>투명성 및 신뢰성 확보</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>모델 작동 방식 이해</strong>: 소스 코드가 공개되어 있으므로, AI 모델이 어떻게 작동하고, 어떤 의사결정을 내리는지 투명하게 검토할 수 있습니다. 이는 AI의 \"블랙박스\" 문제를 해결하고, 편향성이나 윤리적 문제를 식별하고 개선하는 데 도움이 됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>보안 및 검증</strong>: 많은 눈이 코드를 검토하므로 잠재적인 보안 취약점이나 버그를 빠르게 발견하고 수정할 수 있습니다. 이는 모델의 신뢰성을 높이는 데 기여합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>커스터마이징 및 유연성</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>맞춤형 개발</strong>: 공개된 코드를 자신의 특정 요구사항이나 데이터에 맞게 수정하고 최적화할 수 있습니다. 이는 특정 산업이나 문제에 특화된 AI 솔루션을 개발하는 데 필수적입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>독점 종속성 탈피</strong>: 특정 기업의 독점적인 AI 솔루션에 묶이지 않고, 필요한 경우 언제든지 코드를 수정하거나 다른 오픈 소스 대안으로 전환할 수 있는 유연성을 제공합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>데이터 프라이버시 및 보안 강화 (특히 LLM)</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>대규모 언어 모델(LLM)과 같은 AI 모델의 경우, 자체 데이터로 모델을 훈련하고 미세 조정할 때 데이터가 외부 상업 모델 제공업체에 노출될 걱정 없이 내부적으로 안전하게 처리할 수 있습니다. 이는 민감한 데이터를 다루는 금융, 의료, 법률과 같은 산업에서 특히 중요합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>학습 및 교육 기회 증대</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>학생, 연구자, 초보 개발자들이 최신 AI 기술의 실제 구현 코드를 직접 보고 학습하며, 직접 기여하면서 경험을 쌓을 수 있는 훌륭한 학습 도구가 됩니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>오픈 소스는 AI 개발의 접근성을 높이고, 혁신을 가속화하며, 투명성과 신뢰성을 확보하는 데 결정적인 역할을 하고 있습니다. 이는 AI 기술의 발전과 보급에 있어 필수적인 요소로 자리매김하고 있습니다.</p>\n<!-- /wp:paragraph -->','오픈 소스 소프트웨어 (Open Source Software, OSS)란 무엇인가?','','publish','open','closed','','%ec%98%a4%ed%94%88-%ec%86%8c%ec%8a%a4-%ec%86%8c%ed%94%84%ed%8a%b8%ec%9b%a8%ec%96%b4-open-source-software-oss%eb%9e%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(17,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>이 매뉴얼은 외장형 USB 드라이브에 Ubuntu 24.04 LTS를 설치하여, 해당 USB로 부팅하여 우분투를 사용할 수 있도록 하는 방법을 상세히 안내합니다. 이 방법은 주 운영체제(Windows 또는 macOS)에 영향을 주지 않고 리눅스를 경험하거나 휴대용 개발 환경을 구축할 때 유용합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>주의사항 및 사전 준비</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>데이터 백업</strong>: 설치 과정에서 데이터가 손실될 수 있으므로, 외장형 USB 및 컴퓨터의 중요한 데이터는 반드시 백업하십시오.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>외장형 USB 용량</strong>: 최소 32GB 이상의 USB 3.0(속도 향상) USB 드라이브를 권장합니다. 64GB 이상이면 더 쾌적합니다. (설치된 OS + 개인 데이터 저장 공간)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>USB 수명</strong>: USB 드라이브는 SSD나 HDD에 비해 수명이 짧습니다. 자주 쓰기 작업이 발생하는 환경에서는 수명이 단축될 수 있습니다. 중요한 작업용으로는 권장하지 않습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>컴퓨터 사양</strong>: 부팅 가능한 BIOS/UEFI 설정 변경이 가능해야 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>인터넷 연결</strong>: 설치 과정 및 업데이트를 위해 안정적인 인터넷 연결이 필요합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>준비물</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Ubuntu 24.04 LTS ISO 파일</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Ubuntu 공식 웹사이트에서 다운로드합니다: <a href=\"https://ubuntu.com/download/desktop\" target=\"_blank\" rel=\"noreferrer noopener\">https://ubuntu.com/download/desktop</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>부팅 가능한 USB 드라이브를 만들 8GB 이상의 다른 USB 드라이브 (설치 미디어용)</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>이 USB는 Ubuntu 설치를 위한 \'설치 미디어\'가 됩니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Ubuntu 24.04를 설치할 대상 외장형 USB 드라이브 (최소 32GB 이상)</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>이 USB가 최종적으로 Ubuntu가 설치될 공간입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>부팅 가능한 USB 생성 도구</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Windows</strong>: Rufus (권장) 또는 balenaEtcher</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>macOS</strong>: balenaEtcher 또는 Etcher</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Linux</strong>: dd 명령어 또는 balenaEtcher</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>1단계: Ubuntu 24.04 설치 미디어 생성</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>여기서는 Windows 환경에서 Rufus를 사용하여 설명합니다. 다른 OS나 도구를 사용하는 경우에도 개념은 동일합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Ubuntu 24.04 ISO 파일 다운로드</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>위에서 안내된 Ubuntu 공식 웹사이트에서 <code>ubuntu-24.04-desktop-amd64.iso</code> 파일을 다운로드합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Rufus 다운로드 및 실행</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Rufus 공식 웹사이트에서 Rufus를 다운로드하여 실행합니다: <a href=\"https://rufus.ie/ko/\" target=\"_blank\" rel=\"noreferrer noopener\">https://rufus.ie/ko/</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Rufus 설정</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>장치</strong>: Ubuntu 설치 미디어로 만들 USB 드라이브를 선택합니다. (주의: 이 USB의 모든 데이터가 삭제됩니다.)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>부트 선택</strong>: \"선택\" 버튼을 클릭하여 다운로드한 <code>ubuntu-24.04-desktop-amd64.iso</code> 파일을 선택합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>나머지 설정은 기본값을 유지합니다. (파티션 방식은 GPT, 대상 시스템은 UEFI)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"시작\" 버튼을 클릭합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"ISOHybrid 이미지입니다.\"와 같은 메시지가 나타나면 \"ISO 이미지 모드(권장)\"를 선택하고 \"OK\"를 클릭합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"경고\" 메시지가 나타나면 USB 드라이브의 데이터가 모두 삭제된다는 내용이므로, 백업을 완료했다면 \"확인\"을 클릭하여 진행합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>설치 미디어 생성 완료</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>진행률 표시줄이 완료되고 \"준비\" 상태가 되면 Ubuntu 24.04 설치 미디어 USB가 성공적으로 생성된 것입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2단계: 컴퓨터 BIOS/UEFI 설정 변경 및 Ubuntu 부팅</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>이제 Ubuntu를 설치할 외장형 USB와 Ubuntu 설치 미디어 USB를 컴퓨터에 연결하고, BIOS/UEFI 설정을 변경하여 설치 미디어로 부팅합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>두 개의 USB 드라이브 연결</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>1단계에서 만든 <strong>Ubuntu 24.04 설치 미디어 USB</strong>를 컴퓨터에 연결합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Ubuntu를 설치할 **대상 외장형 USB 드라이브 (최소 32GB 이상)**를 컴퓨터에 연결합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>컴퓨터 재부팅 및 BIOS/UEFI 진입</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>컴퓨터를 재부팅하고, 부팅 시 BIOS/UEFI 설정 화면으로 진입하는 키를 반복해서 누릅니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>일반적인 키</strong>: <code>Del</code>, <code>F2</code>, <code>F10</code>, <code>F12</code> 또는 <code>Esc</code> (컴퓨터 제조사마다 다릅니다. 제조사 웹사이트를 참조하세요.)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>부팅 순서 변경</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>BIOS/UEFI 설정 화면에서 \"Boot Options\", \"Boot Order\", \"Startup\" 등과 유사한 메뉴를 찾습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>부팅 순서를 변경하여 1단계에서 생성한 <strong>Ubuntu 24.04 설치 미디어 USB</strong>가 첫 번째 부팅 장치가 되도록 설정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>UEFI 모드 부팅 확인</strong>: 대부분의 최신 시스템은 UEFI 모드를 지원하며, EFI 파티션을 생성해야 하므로 UEFI 모드로 부팅하는 것이 중요합니다. USB 장치 이름 앞에 \"UEFI\"가 붙어있는 것을 선택합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>설정을 저장하고 종료합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Ubuntu 설치 프로그램 부팅</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>컴퓨터가 재부팅되면서 Ubuntu 설치 미디어 USB로 부팅됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>첫 화면에서 \"Try or Install Ubuntu\"를 선택합니다. (Try Ubuntu를 선택하여 데스크톱 환경을 먼저 경험해 볼 수도 있지만, 설치를 위해선 결국 \"Install Ubuntu\"를 눌러야 합니다.)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3단계: Ubuntu 24.04 설치 과정</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ubuntu 설치 마법사를 따라 진행합니다. <strong>여기서 가장 중요한 부분은 설치할 드라이브를 정확히 선택하는 것입니다.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>언어 선택</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>\"한국어\"를 선택하고 \"계속\"을 클릭합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>키보드 배열 선택</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>\"한국어\"를 선택하고 \"계속\"을 클릭합니다. (대부분 기본값으로 충분합니다.)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>업데이트 및 다른 소프트웨어</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>**\"일반 설치\"**를 선택합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"설치 중 업데이트 다운로드\"</strong>: 선택하는 것이 좋습니다. 인터넷 연결이 되어 있어야 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"그래픽, Wi-Fi 하드웨어 및 추가 미디어 형식용 서드파티 소프트웨어 설치\"</strong>: 이 옵션은 드라이버 및 코덱 문제를 줄여주므로 <strong>반드시 선택하는 것을 권장</strong>합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"계속\"을 클릭합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>설치 형식 선택 (가장 중요!)</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>이 단계에서 주 컴퓨터의 디스크가 아닌, 외장형 USB 드라이브를 정확하게 선택해야 합니다.</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"다른 것\"</strong> (Something else) 옵션을 선택합니다. <strong>다른 옵션을 선택하면 주 컴퓨터의 디스크가 지워질 수 있습니다.</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"계속\"을 클릭합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>파티션 설정</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>이제 파티션을 설정하는 화면이 나옵니다. 여기서 <strong>Ubuntu를 설치할 외장형 USB 드라이브</strong>를 찾습니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>일반적으로 <code>/dev/sda</code>는 내장 디스크이고, <code>/dev/sdb</code>, <code>/dev/sdc</code> 등이 외장 USB 드라이브일 가능성이 높습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>USB 드라이브의 <strong>용량</strong>을 확인하여 올바른 드라이브인지 다시 한번 확인합니다. (예: 64GB USB는 약 58GB 정도로 표시될 수 있습니다.)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>선택한 외장형 USB 드라이브의 파티션을 모두 삭제합니다.</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>해당 드라이브의 기존 파티션을 클릭하고 <code>-</code> 버튼을 눌러 \"사용 가능한 공간\"으로 만듭니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>새로운 파티션 테이블 생성</strong>: 선택한 USB 드라이브를 클릭하고 \"새 파티션 테이블\" (New Partition Table) 버튼을 클릭합니다. \"계속\"을 클릭하여 확인합니다. 이제 드라이브 전체가 \"사용 가능한 공간\"으로 표시될 것입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>파티션 생성</strong>: 이제 \"사용 가능한 공간\"을 선택하고 <code>+</code> 버튼을 클릭하여 필요한 파티션을 생성합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>EFI 시스템 파티션 (ESP)</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>크기: <strong>512 MB</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>용도: <strong>EFI 시스템 파티션</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>(이 파티션은 UEFI 부팅 시스템에 필요합니다. 만약 BIOS 부팅만 지원하는 구형 시스템이라면 이 파티션은 필요 없습니다.)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>루트 (/) 파티션</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>크기: 나머지 공간 중 대부분을 할당합니다. (예: 50GB 이상)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>용도: <strong>Ext4 저널링 파일 시스템</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>마운트 위치: <strong><code>/</code></strong> (루트)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>SWAP 파티션 (선택 사항이지만 권장)</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>크기: 램(RAM) 크기와 동일하거나 램 크기의 1.5배 (최소 2GB, 최대 8GB 정도)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>용도: <strong>스왑 영역</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>(최근 Ubuntu 버전에서는 SWAP 파일을 기본으로 사용하므로, 별도의 SWAP 파티션이 필수는 아닙니다. 하지만 외장 USB에 설치하는 경우, 안정성을 위해 SWAP 파티션을 할당하는 것이 좋습니다.)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>부트로더 설치 장치</strong>: 화면 하단의 \"부트로더를 설치할 장치\" (Device for boot loader installation) 드롭다운 메뉴에서 <strong>Ubuntu를 설치할 외장형 USB 드라이브</strong>의 최상위 장치 (예: <code>/dev/sdb</code> 또는 <code>/dev/sdc</code> 전체)를 선택합니다. <strong>절대 내장 하드 드라이브를 선택하지 마십시오.</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>모든 파티션 설정을 확인하고 \"지금 설치\" (Install Now)를 클릭합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>변경 사항을 디스크에 기록할 것인지 묻는 경고 메시지가 나타나면, 모든 설정을 다시 한번 확인하고 \"계속\"을 클릭합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>지역 선택</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>지도에서 자신의 위치(예: 서울)를 클릭하여 시간대를 설정합니다. \"계속\"을 클릭합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>사용자 정보 입력</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>사용자 이름, 컴퓨터 이름, 사용자 이름, 비밀번호를 입력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"자동으로 로그인\" 또는 \"로그인하려면 암호 필요\" 중 하나를 선택합니다. (휴대용이면 자동으로 로그인도 고려할 수 있습니다.)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"계속\"을 클릭합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>설치 완료 대기</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>설치가 진행되는 동안 기다립니다. 인터넷 속도와 USB 드라이브 속도에 따라 시간이 달라질 수 있습니다 (수십 분 소요).</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>재시작</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>설치가 완료되면 \"지금 재시작\" (Restart Now) 버튼을 클릭합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>재시작 메시지가 나타나면 <strong>설치 미디어 USB를 제거</strong>하고 Enter를 누릅니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4단계: 외장형 USB로 Ubuntu 부팅</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>이제 Ubuntu가 설치된 외장형 USB로 컴퓨터를 부팅하는 방법을 알아봅니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Ubuntu가 설치된 외장형 USB만 연결</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>설치 미디어 USB는 제거</strong>하고, Ubuntu가 설치된 <strong>대상 외장형 USB 드라이브만</strong> 컴퓨터에 연결합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>컴퓨터 재부팅 및 BIOS/UEFI 진입</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>컴퓨터를 재부팅하고, 부팅 시 BIOS/UEFI 설정 화면으로 진입하는 키를 반복해서 누릅니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>부팅 순서 변경</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>BIOS/UEFI 설정에서 \"Boot Options\", \"Boot Order\" 등과 유사한 메뉴를 찾습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Ubuntu가 설치된 외장형 USB 드라이브</strong>를 첫 번째 부팅 장치로 선택합니다. (예: \"USB HDD\", \"UEFI: [USB 제조사 이름]\")</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>설정을 저장하고 종료합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Ubuntu 부팅 확인</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>컴퓨터가 재부팅되면서 외장형 USB 드라이브에 설치된 Ubuntu 24.04로 부팅될 것입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>로그인 화면이 나타나면 설정했던 비밀번호를 입력하고 로그인합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>문제 해결 팁</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>부팅이 안 될 때</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>BIOS/UEFI에서 부팅 순서를 정확히 설정했는지 다시 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>UEFI/Legacy (CSM) 모드 설정을 확인합니다. 최신 시스템은 UEFI 모드를 권장합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>\"보안 부팅\" (Secure Boot)이 활성화되어 있다면 일시적으로 비활성화해 봅니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>USB 포트를 바꿔서 시도해 봅니다 (USB 2.0 포트 사용 시 호환성 문제가 해결될 수도 있습니다).</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>설치 중 오류 발생</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>ISO 파일이 손상되었을 수 있습니다. 다시 다운로드하여 무결성을 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>설치 미디어 USB를 다시 생성해 봅니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>USB 드라이브 자체에 문제가 있을 수 있습니다. 다른 USB 드라이브를 사용해 봅니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>느린 속도</strong>:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>USB 2.0 대신 USB 3.0 포트와 USB 3.0 드라이브를 사용했는지 확인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>저렴한 USB 메모리는 읽기/쓰기 속도가 느려 성능이 저하될 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->','외장형 USB에 Ubuntu 24.04 설치','','publish','open','closed','','%ec%99%b8%ec%9e%a5%ed%98%95-usb%ec%97%90-ubuntu-24-04-%ec%84%a4%ec%b9%98','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(18,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">도입</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있도록 하는 개방형 플랫폼이다. Docker는 소프트웨어를 컨테이너라는 표준화된 단위로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다. 이를 통해 개발자는 환경에 구애받지 않고 애플리케이션을 동일하게 실행할 수 있으며, 인프라와 애플리케이션을 분리하여 운영 효율성을 극대화할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>본 매뉴얼은 Ubuntu 24.04 LTS 환경에서 Docker를 설치하고, 기본적인 명령어를 통해 컨테이너와 이미지를 관리하며, Python 애플리케이션을 컨테이너화하는 방법, 일반적인 문제 해결 방안, 그리고 Docker 보안 강화 전략에 이르기까지 포괄적인 내용을 다룬다. 각 단계별 상세한 설명과 예제를 통해 사용자가 Docker를 효과적으로 이해하고 활용할 수 있도록 지원하는 것을 목표로 한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>1. Ubuntu 24.04 Docker 설치 준비</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker Engine을 Ubuntu 24.04에 성공적으로 설치하기 위해서는 몇 가지 사전 준비 사항을 확인하고 충족해야 한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>1.1. 시스템 요구 사항 및 사전 확인</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>운영체제</strong>: Ubuntu Noble 24.04 (LTS)의 64비트 버전이 필요하다. Docker Engine은 x86_64 (amd64), armhf, arm64, s390x, ppc64le (ppc64el) 아키텍처를 지원한다. Linux Mint와 같은 Ubuntu 파생 배포판에서의 설치는 공식적으로 지원되지 않을 수 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>커널 버전</strong>: Docker는 Linux 커널의 특정 기능을 활용하므로, 최신 상태의 커널을 사용하는 것이 권장된다. 일반적으로 Ubuntu 24.04 LTS의 기본 커널은 Docker 실행에 충분하다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>저장 공간</strong>: Docker 이미지와 컨테이너는 디스크 공간을 차지하므로, 충분한 여유 공간을 확보해야 한다. /var/lib/docker/ 디렉토리에 주로 데이터가 저장된다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>방화벽 제한 사항</strong>: Docker를 사용하여 컨테이너 포트를 노출할 경우, ufw 또는 firewalld와 같은 방화벽 규칙을 우회할 수 있다. Docker는 iptables-nft 및 iptables-legacy와 호환되며, nft로 생성된 방화벽 규칙은 지원하지 않는다. 방화벽 규칙은 iptables 또는 ip6tables로 생성하고 DOCKER-USER 체인에 추가해야 한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>1.2. 기존 Docker 버전 또는 충돌 가능 패키지 제거</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>새로운 버전의 Docker Engine을 설치하기 전에, 시스템에 이전 버전의 Docker나 비공식 Docker 패키지가 설치되어 있다면 이를 제거하는 것이 좋다. 충돌을 유발할 수 있는 패키지에는 docker.io, docker-doc, docker-compose, docker-compose-v2, podman-docker 등이 있다. 또한, Docker Engine이 자체적으로 containerd.io와 runc를 번들로 제공하므로, 이들이 별도로 설치되어 있다면 제거해야 한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다음 명령어를 사용하여 관련 패키지를 제거할 수 있다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done<br></code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>이 명령어는 패키지를 제거하지만, /var/lib/docker/에 저장된 기존 이미지, 컨테이너, 볼륨, 네트워크는 자동으로 삭제되지 않는다. 완전히 새로 설치하고자 한다면, Docker 제거 후 해당 디렉토리를 수동으로 삭제해야 할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>2. Ubuntu 24.04에 Docker Engine 설치 (APT 저장소 방식)</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ubuntu에 Docker Engine을 설치하는 가장 권장되는 방법은 Docker의 공식 APT 저장소를 사용하는 것이다. 이 방법을 사용하면 설치 및 업데이트 관리가 용이하다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.1. Docker 공식 GPG 키 추가</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPG 키는 다운로드하는 패키지의 진위성을 확인하여 소프트웨어 무결성을 보장하는 데 필수적이다. 이 과정은 신뢰할 수 있는 소스에서 Docker를 설치하고 있음을 시스템에 알리는 역할을 한다. 만약 GPG 키 검증 없이 패키지를 설치한다면, 중간자 공격(Man-in-the-Middle attack)이나 악의적으로 수정된 소프트웨어에 노출될 위험이 있다. 따라서 GPG 키 추가는 보안상 매우 중요한 단계이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code><code>#  <span style=\"background-color: initial; font-family: inherit; font-size: inherit; text-align: initial; color: initial;\">먼저, 시스템 패키지 목록을 업데이트하고 HTTPS를 통해 저장소를 사용하는 데 필요한 패키지를 설치한다:</span></code>\n<code>sudo apt-get update </code>\n<code>sudo apt-get install ca-certificates curl </code>\n# GPG 키를 저장할 디렉토리를 생성하고 적절한 권한을 설정한다:\n\n<code>sudo install -m 0755 -d /etc/apt/keyrings </code>\n# Docker의 공식 GPG 키를 다운로드하여 지정된 경로에 저장한다:\n\n<code>sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc </code>\n# 다운로드한 GPG 키 파일에 대해 모든 사용자가 읽을 수 있도록 권한을 변경한다:\n\n<code>sudo chmod a+r /etc/apt/keyrings/docker.asc </code></code></pre>\n<!-- /wp:code -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.2. Docker APT 저장소 설정</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>GPG 키를 추가한 후, APT가 Docker 패키지를 찾을 수 있도록 Docker의 공식 저장소를 시스템의 소스 목록에 추가해야 한다. 공식 저장소를 사용하면 Docker 팀이 직접 제공하고 관리하는 최신 버전의 안정적이고 안전한 패키지를 받을 수 있다. 운영체제의 기본 저장소에 포함된 Docker 패키지는 오래되었거나 수정되었을 가능성이 있으므로, 공식 저장소 사용은 최신 기능과 보안 패치를 보장받는 최선의 방법이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다음 명령어를 실행하여 Docker 저장소를 APT 소스 목록에 추가한다. 이 명령어는 시스템 아키텍처와 Ubuntu 코드명을 자동으로 감지하여 적절한 저장소를 설정한다:<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code><code># Add the repository to Apt sources: </code>\necho \\\n  \"deb &#91;arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \\\n  $(. /etc/os-release &amp;&amp; echo \"${UBUNTU_CODENAME:-$VERSION_CODENAME}\") stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null\n\n\n# 저장소를 추가한 후, 다시 패키지 목록을 업데이트하여 APT가 새로운 Docker 저장소의 패키지 정보를 가져오도록 한다:\n\nsudo apt-get update</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.3. Docker Engine 패키지 설치</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>저장소 설정이 완료되면 Docker Engine 및 관련 패키지를 설치할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>최신 버전의 Docker Engine, CLI, containerd, Docker Compose 플러그인, Buildx 플러그인을 설치하려면 다음 명령어를 실행한다:\n\nsudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>여기서 각 패키지의 역할은 다음과 같다:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>docker-ce: Docker Community Edition, 즉 Docker 엔진 자체이다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker-ce-cli: Docker 명령줄 인터페이스(CLI)를 제공한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>containerd.io: 컨테이너 런타임으로, 컨테이너의 생명주기를 관리한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker-buildx-plugin: 다중 플랫폼 빌드 등 향상된 이미지 빌드 기능을 제공한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker-compose-plugin: YAML 파일을 사용하여 다중 컨테이너 Docker 애플리케이션을 관리할 수 있게 한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>특정 버전의 Docker Engine을 설치하려면, 먼저 사용 가능한 버전을 확인한다:\n\napt-cache madison docker-ce | awk \'{ print $3 }\'\n\n출력된 목록에서 원하는 버전 문자열(예: 5:28.2.1-1~ubuntu.24.04~noble)을 선택한 후, 해당 버전으로 설치한다:\n\nVERSION_STRING=5:28.2.1-1~ubuntu.24.04~noble\n\nsudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2.4. 설치 확인</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker Engine이 성공적으로 설치되었는지 확인하기 위해 hello-world 이미지를 실행한다. 이 이미지는 간단한 테스트용으로, 실행 시 Docker 설치가 정상적으로 완료되었음을 알리는 메시지를 출력한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo docker run hello-world</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>이 명령어를 실행하면 hello-world 이미지가 로컬에 없는 경우 Docker Hub에서 자동으로 다운로드되고, 컨테이너로 실행된 후 메시지를 출력하고 종료된다. \"Hello from Docker!\"와 유사한 메시지가 나타나면 설치가 성공적으로 완료된 것이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>설치된 Docker 버전을 확인하려면 다음 명령어를 사용한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo docker --version</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>출력 예: Docker version 26.1.4, build 5650f9b</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>3. Docker 설치 후속 조치</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker Engine 설치 후, 사용 편의성과 시스템 관리를 위해 몇 가지 추가 설정을 수행하는 것이 좋다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3.1. sudo 없이 Docker 명령어 사용 설정 (비루트 사용자 접근 활성화)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>기본적으로 Docker 명령어는 루트 권한을 요구하므로 sudo를 함께 사용해야 한다. 매번 sudo를 입력하는 번거로움을 줄이고자 한다면, 현재 사용자를 docker 그룹에 추가할 수 있다. 이 설정은 편의성을 제공하지만, 보안적 측면을 고려해야 한다. docker 그룹에 속한 사용자는 Docker 데몬과 직접 통신할 수 있게 되며, Docker 데몬은 루트 권한으로 실행되므로 이는 해당 사용자에게 사실상 루트와 동등한 권한을 부여하는 것과 같다. 특히 다중 사용자 환경에서는 이 설정이 보안 위험을 증가시킬 수 있으므로 신중하게 결정해야 한다. 단일 사용자 환경이나 개발 환경에서는 편의를 위해 설정하는 경우가 많다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker 그룹이 시스템에 존재하지 않을 경우 생성한다. -f 옵션은 그룹이 이미 존재하더라도 오류를 발생시키지 않는다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo groupadd -f docker\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>현재 로그인된 사용자를 docker 그룹에 추가한다. 다른 사용자를 추가하려면 $USER 대신 해당 사용자명을 입력한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo usermod -aG docker $USER</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>또는 특정 사용자를 추가하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo usermod -aG docker &#91;username]</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>그룹 변경 사항을 현재 세션에 적용한다. 이를 위해서는 newgrp docker 명령어를 실행하거나, 시스템에서 로그아웃한 후 다시 로그인해야 한다. newgrp 명령어는 새로운 셸을 시작하여 변경된 그룹 멤버십을 즉시 적용한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>newgrp docker</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>이후에는 sudo 없이 docker ps와 같은 Docker 명령어를 실행할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>docker ps</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>실행 중인 컨테이너가 없다면 빈 목록이 출력될 것이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3.2. Docker 서비스 관리</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker는 시스템 서비스로 실행되므로 systemctl 명령어를 사용하여 관리할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>부팅 시 Docker 자동 시작 활성화</strong>: 시스템이 시작될 때 Docker 서비스가 자동으로 실행되도록 설정한다.<br>sudo systemctl enable docker<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 서비스 상태 확인</strong>: Docker 서비스의 현재 실행 상태를 확인한다.<br>sudo systemctl status docker<br>출력에서 active (running) 상태를 확인하면 정상적으로 실행 중인 것이다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 서비스 시작</strong>: 중지된 Docker 서비스를 시작한다.<br>sudo systemctl start docker<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 서비스 중지</strong>: 실행 중인 Docker 서비스를 중지한다.<br>sudo systemctl stop docker<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 서비스 재시작</strong>: Docker 서비스를 재시작한다. 설정 변경 후 적용하거나 문제가 발생했을 때 사용한다.<br>sudo systemctl restart docker<br></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>4. Docker 기본 명령어 활용</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker 설치 후에는 다양한 명령어를 사용하여 컨테이너와 이미지를 관리할 수 있다. 다음은 핵심적인 기본 명령어들이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.1. docker ps: 실행 중인 컨테이너 목록 확인</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker ps 명령어는 현재 실행 중인 컨테이너의 목록을 보여준다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker ps<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>모든 컨테이너(중지된 컨테이너 포함)를 보려면 -a 또는 --all 옵션을 추가한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker ps -a<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>출력에는 컨테이너 ID, 사용된 이미지, 실행된 명령어, 생성 시간, 상태, 포트, 이름 등의 정보가 포함된다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.2. docker stop: 실행 중인 컨테이너 중지</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker stop [container_name_or_id] 명령어는 실행 중인 컨테이너를 중지시킨다. (User Query) 이 명령어는 컨테이너의 주 프로세스에 SIGTERM 신호를 보내 정상적으로 종료하도록 요청한다. 일정 시간(기본 10초) 내에 종료되지 않으면 SIGKILL 신호를 보내 강제 종료한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker stop my_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>(User Query) 여러 컨테이너를 한 번에 중지시킬 수도 있다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker stop container1 container2<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>모든 실행 중인 컨테이너를 중지하려면 다음 명령어를 사용할 수 있다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker stop $(docker ps -q)<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>여기서 docker ps -q는 실행 중인 컨테이너의 ID만 나열한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.3. docker start: 중지된 컨테이너 재시작</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker start [container_name_or_id] 명령어는 중지된 컨테이너를 다시 시작시킨다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker start my_stopped_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>(User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.4. docker logs: 컨테이너 로그 확인</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker logs [container_name_or_id] 명령어는 컨테이너 내부에서 발생하는 로그(표준 출력 및 표준 에러)를 확인할 때 사용한다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker logs my_running_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>실시간으로 로그를 계속 보려면 -f 또는 --follow 옵션을 추가한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker logs -f my_running_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>최근 N개의 로그 라인만 보려면 --tail N 옵션을 사용한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker logs --tail 50 my_running_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.5. docker rm: 컨테이너 삭제</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker rm [container_name_or_id] 명령어는 하나 이상의 컨테이너를 삭제한다. (User Query) 컨테이너는 중지된 상태여야 삭제할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker rm my_stopped_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>실행 중인 컨테이너를 중지하지 않고 즉시 삭제하려면 -f 또는 --force 옵션을 추가한다. 이 옵션은 컨테이너에 SIGKILL 신호를 보내 강제 종료 후 삭제한다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker rm -f my_running_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>모든 중지된 컨테이너를 삭제하려면 다음 명령어를 사용할 수 있다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker rm $(docker ps -a -f status=exited -q)<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>또는 docker container prune 명령어를 사용하면 중지된 모든 컨테이너를 한 번에 삭제할 수 있다 (사용자 확인 후 진행):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker container prune<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>4.6. docker rmi: 이미지 삭제</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker rmi [image_name_or_id] 명령어는 로컬 시스템에서 하나 이상의 Docker 이미지를 삭제한다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker rmi my_image:tag<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이미지가 실행 중인 컨테이너나 다른 이미지의 부모 이미지로 사용되고 있다면 삭제되지 않는다. 강제로 삭제하려면 -f 또는 --force 옵션을 사용할 수 있지만, 주의해야 한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker rmi -f my_image:tag<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>태그가 없는 이미지(댕글링 이미지, dangling images)만 삭제하려면 다음 명령어를 사용한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker image prune<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>모든 이미지를 삭제하려면 (사용 중이지 않은 이미지 대상):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker rmi $(docker images -a -q)<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>5. Docker 컨테이너 실행: docker run 상세 분석</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker run 명령어는 Docker에서 이미지를 기반으로 새로운 컨테이너를 생성하고 실행하는 핵심 명령어이다. 이 명령어는 다양한 옵션을 통해 컨테이너의 동작 방식을 세밀하게 제어할 수 있다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>5.1. docker run 기본 구문</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker run 명령어의 일반적인 형태는 다음과 같다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker run IMAGE<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>``: 컨테이너의 동작을 설정하는 다양한 옵션들이다. (User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>IMAGE: 컨테이너를 생성할 기반 Docker 이미지의 이름이다. 태그(:TAG)를 생략하면 기본적으로 :latest 태그가 사용된다. 이미지 다이제스트(@DIGEST)를 사용하여 특정 버전의 이미지를 정확히 지정할 수도 있다. (User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>``: 컨테이너가 시작될 때 내부에서 실행할 명령어이다. 이미지에 기본 실행 명령어가 정의되어 있다면 생략 가능하다. (User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>: 에 전달할 인자들이다. (User Query)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>예를 들어, busybox 이미지를 사용하여 \"Hello, World!\"를 출력하는 간단한 컨테이너를 실행하는 명령어는 다음과 같다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker run busybox echo \"Hello, World!\"<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>5.2. docker run 주요 옵션</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker run 명령어와 함께 자주 사용되는 주요 옵션들은 다음과 같다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>-d, --detach</strong>: 컨테이너를 백그라운드에서 실행한다 (데몬 모드). (User Query) 터미널에 연결되지 않고 백그라운드에서 실행되므로 웹 서버나 데이터베이스와 같은 서비스를 실행할 때 유용하다.<br>docker run -d nginx<br>이 옵션은 장기 실행 서비스에 적합하며, 컨테이너 ID만 출력하고 터미널 제어권을 즉시 반환한다. 반면, 대화형 세션이 필요한 경우 (예: 셸 접속) 이 옵션은 적합하지 않다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>-p, --publish HOST_PORT:CONTAINER_PORT</strong>: 호스트와 컨테이너 간의 포트를 연결(매핑)한다. (User Query) 호스트의 HOST_PORT로 들어오는 트래픽을 컨테이너 내부의 CONTAINER_PORT로 전달한다. 예: -p 8080:80은 호스트의 8080번 포트를 컨테이너의 80번 포트로 연결한다. (User Query)<br>docker run -d -p 8080:80 nginx<br>(User Query) 이 포트 매핑 기능은 컨테이너 내부에서 실행 중인 애플리케이션을 외부 네트워크에 노출시키는 핵심 방법이다. 호스트 포트는 호스트 머신에서 사용 가능한 포트여야 하며, 컨테이너 포트는 컨테이너 내 애플리케이션이 수신 대기하는 포트이다. 이를 통해 동일한 컨테이너 이미지를 여러 개 실행하면서 각각 다른 호스트 포트에 매핑하여 서비스 충돌 없이 여러 인스턴스를 운영할 수 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>-v, --volume HOST_PATH:CONTAINER_PATH 또는 VOLUME_NAME:CONTAINER_PATH</strong>: 호스트와 컨테이너 간의 디렉토리나 파일을 공유(마운트)하거나, 명명된 볼륨을 컨테이너에 연결한다. (User Query)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>바인드 마운트 (Bind Mounts)</strong>: 호스트의 특정 경로(HOST_PATH)를 컨테이너의 특정 경로(CONTAINER_PATH)에 직접 연결한다. 호스트 파일 시스템의 변경 사항이 컨테이너에 반영되고, 그 반대도 가능하다. 예: 호스트의 /opt/data 디렉토리를 컨테이너의 /app 디렉토리와 공유한다.<br>docker run -v /opt/data:/app myapp<br>(User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>명명된 볼륨 (Named Volumes)</strong>: Docker가 관리하는 영구 저장 공간인 명명된 볼륨(VOLUME_NAME)을 컨테이너의 특정 경로(CONTAINER_PATH)에 연결한다. 데이터베이스 데이터나 애플리케이션 상태를 영구적으로 저장하는 데 권장된다. 예: my_volume이라는 명명된 볼륨을 컨테이너의 /data 경로에 마운트한다.<br>docker run --mount source=my_volume,target=/data myimage<br>(또는 -v my_volume:/data)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>--name CONTAINER_NAME</strong>: 컨테이너에 고유한 이름을 지정한다. (User Query) 이름을 지정하면 컨테이너 ID 대신 이름으로 컨테이너를 참조할 수 있어 관리가 용이하다.<br>docker run -d --name my_web_server nginx<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>--env KEY=VALUE 또는 -e KEY=VALUE</strong>: 컨테이너 내부에 환경 변수를 설정한다. (User Query) 애플리케이션 설정, 데이터베이스 연결 정보 등을 전달하는 데 사용된다. 예: DATABASE_URL 환경 변수를 설정한다.<br>docker run --env DATABASE_URL=mysql://user:password@localhost:5432/db myapp<br>(User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>-i, --interactive</strong>: 컨테이너의 표준 입력(STDIN)을 열린 상태로 유지한다. 주로 -t 옵션과 함께 사용된다. (User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>-t, --tty</strong>: 가상 터미널(pseudo-TTY)을 할당한다. 주로 -i 옵션과 함께 사용되어 컨테이너와 상호작용하는 셸 환경을 제공한다. (User Query) 예: Ubuntu 이미지로 컨테이너를 실행하고 bash 셸에 접속한다.<br>docker run -it ubuntu /bin/bash<br>-it 옵션은 컨테이너 내부에서 명령어를 직접 입력하고 결과를 확인해야 하는 디버깅이나 개발 작업에 필수적이다. -d 옵션과는 상반되는 용도로, 포그라운드에서 대화형 세션을 유지한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>5.3. docker run 추가 옵션</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>자주 사용되는 옵션 외에도 다음과 같은 유용한 옵션들이 있다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>--rm</strong>: 컨테이너가 종료될 때 자동으로 삭제한다. 일회성 작업이나 테스트용 컨테이너에 유용하다.<br>docker run --rm busybox echo \"Task complete, removing container\"<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>--link OTHER_CONTAINER_NAME:ALIAS</strong>: 다른 컨테이너와 네트워크 연결을 설정한다 (레거시 기능, 사용자 정의 네트워크 사용 권장). (User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>-e, --env-file FILE_PATH</strong>: 환경 변수가 정의된 파일로부터 환경 변수를 읽어와 컨테이너에 설정한다. (User Query)<br>docker run --env-file./env.list myapp<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>--restart RESTART_POLICY</strong>: 컨테이너가 종료되었을 때 재시작 정책을 설정한다. (User Query) 예: --restart always (항상 재시작), --restart on-failure (오류로 종료 시 재시작).<br>docker run -d --restart always my_reliable_service<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>--network NETWORK_NAME</strong>: 컨테이너가 속할 네트워크를 지정한다. (User Query) 기본 브리지 네트워크 대신 사용자 정의 네트워크에 연결할 때 사용한다.<br>docker run --network my_custom_network myapp<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>--add-host HOSTNAME:IP_ADDRESS</strong>: 컨테이너 내부의 /etc/hosts 파일에 호스트 이름과 IP 주소 매핑을 추가한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>-w, --workdir PATH</strong>: 컨테이너 내부의 작업 디렉토리를 설정한다. COMMAND가 이 디렉토리에서 실행된다. (docker exec에서도 사용)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>docker run 명령어는 매우 강력하며, 위에 언급된 옵션 외에도 다양한 옵션들이 존재한다. docker run --help 명령어를 통해 모든 옵션과 설명을 확인할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>6. Docker 컨테이너 관리 심화</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>컨테이너를 실행한 후에는 컨테이너 내부와 상호작용하거나, 컨테이너의 생명주기를 보다 세밀하게 제어해야 하는 경우가 발생한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.1. 실행 중인 컨테이너에 명령어 전달: docker exec</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker exec 명령어는 이미 실행 중인 컨테이너 내부에서 새로운 명령어를 실행하는 데 사용된다. (User Query) 이는 컨테이너를 중지하거나 새로 시작하지 않고도 내부 상태를 확인하거나, 파일을 수정하거나, 추가적인 프로세스를 실행할 수 있게 해준다. docker run이 새로운 컨테이너를 생성하여 명령어를 실행하는 반면, docker exec는 기존 컨테이너의 네임스페이스 내에서 작동한다. 이 명령어는 컨테이너의 주 프로세스(PID 1)가 실행 중일 때만 작동하며, docker exec로 실행된 명령어는 컨테이너 재시작 시 자동으로 다시 실행되지 않는다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>기본 구문:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker exec CONTAINER COMMAND<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>가장 일반적인 사용 사례는 실행 중인 컨테이너의 셸에 접근하는 것이다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker exec -it [container_name_or_id] /bin/bash<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>(User Query) 또는 Alpine Linux와 같이 /bin/bash가 없는 최소 이미지의 경우 /bin/sh를 사용한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker exec -it [container_name_or_id] sh<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>-i, --interactive: 표준 입력을 열린 상태로 유지한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>-t, --tty: 가상 터미널을 할당한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>-d, --detach: 명령어를 백그라운드에서 실행한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>-e, --env KEY=VALUE: exec 프로세스에 대한 환경 변수를 설정한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>-w, --workdir PATH: exec 프로세스가 실행될 컨테이너 내부의 작업 디렉토리를 지정한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>예를 들어, my_container라는 이름의 실행 중인 컨테이너 내부에 /tmp/execWorks라는 파일을 생성하는 명령어는 다음과 같다 (백그라운드 실행):</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker exec -d my_container touch /tmp/execWorks<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.2. 컨테이너에서 빠져나오기</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>-it 옵션으로 컨테이너의 셸에 접속한 경우, 다음 두 가지 방법으로 빠져나올 수 있다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>컨테이너를 종료하지 않고 빠져나오기</strong>: Ctrl+P를 누른 후 Ctrl+Q를 차례로 입력한다. (User Query) 이렇게 하면 컨테이너는 백그라운드에서 계속 실행된 상태로 현재 터미널 세션만 컨테이너에서 분리된다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>컨테이너를 종료하면서 빠져나오기</strong>: 셸에서 exit 명령어를 입력하거나 Ctrl+D를 누른다. 또는 Ctrl+C를 사용하여 현재 실행 중인 포그라운드 프로세스(예: 셸)를 종료시킬 수 있으며, 이것이 컨테이너의 주 프로세스(PID 1)라면 컨테이너 자체가 종료될 수 있다. (User Query)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.3. 컨테이너 강제 종료: docker kill</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker stop 명령어가 컨테이너에 SIGTERM 신호를 보내 정상 종료를 시도하는 반면, docker kill [container_name_or_id] 명령어는 즉시 SIGKILL 신호를 보내 컨테이너를 강제로 종료시킨다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker kill my_ unresponsive_container<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>(User Query) docker stop으로 컨테이너가 정상적으로 종료되지 않거나 즉각적인 종료가 필요할 때 사용된다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>6.4. 모든 컨테이너 중지 및 삭제</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>모든 컨테이너 중지</strong>:<br>docker stop $(docker ps -a -q)<br>(User Query) 이 명령어는 실행 중인 컨테이너와 중지된 컨테이너 모두를 대상으로 stop 명령을 시도한다 (docker ps -a -q는 모든 컨테이너 ID를 반환). 실제로는 실행 중인 컨테이너만 중지된다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>모든 컨테이너 삭제 (중지 후)</strong>: 먼저 모든 컨테이너를 중지한 후, 모든 컨테이너를 삭제한다.<br>docker stop $(docker ps -a -q)<br>docker rm $(docker ps -a -q)<br>이 두 명령어를 순차적으로 실행하면 시스템의 모든 컨테이너가 정리된다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>7. Docker 시스템 관리</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker를 장기간 사용하다 보면 이미지, 컨테이너, 볼륨, 네트워크 등 사용하지 않는 리소스들이 누적되어 디스크 공간을 불필요하게 차지할 수 있다. Docker는 이러한 리소스를 효율적으로 관리하고 시스템 상태를 점검할 수 있는 명령어들을 제공한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>7.1. Docker 디스크 사용량 확인: docker system df</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker system df 명령어는 Docker가 사용 중인 디스크 공간에 대한 요약 정보를 보여준다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker system df<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>출력에는 이미지, 컨테이너, 로컬 볼륨, 빌드 캐시 각각에 대한 총 개수, 활성 개수, 사용 중인 크기, 그리고 회수 가능한 공간(unused and reclaimable space)이 표시된다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>더 상세한 정보를 보려면 -v 또는 --verbose 옵션을 사용한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker system df -v<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 옵션은 각 이미지, 컨테이너, 볼륨별로 개별 크기와 회수 가능 여부 등의 자세한 정보를 제공하여 어떤 요소가 디스크 공간을 많이 차지하는지 파악하는 데 도움이 된다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>출력 형식을 JSON으로 지정하여 스크립트나 다른 도구에서 파싱하기 용이하게 만들 수도 있다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker system df --format json<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>7.2. 불필요한 Docker 리소스 정리: docker system prune</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker system prune 명령어는 사용하지 않는 Docker 리소스(중지된 컨테이너, 사용되지 않는 네트워크, 댕글링 이미지, 빌드 캐시)를 한 번에 정리하여 디스크 공간을 확보하는 데 매우 유용하다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker system prune<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 명령어를 실행하면 삭제될 대상과 함께 경고 메시지가 표시되며, 계속 진행할지 여부를 묻는다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker system prune 명령어는 다음과 같은 주요 옵션들을 제공한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>-a, --all</strong>: 기본적으로 docker system prune은 댕글링 이미지(태그가 없고 다른 이미지의 부모도 아닌 이미지)만 삭제한다. -a 옵션을 추가하면 사용 중이지 않은 모든 이미지(태그가 있는 이미지 포함)까지 삭제 대상으로 포함한다.<br>docker system prune -a<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>--volumes</strong>: 기본적으로 명명된 볼륨은 데이터 손실을 방지하기 위해 삭제되지 않는다. 이 옵션을 사용하면 사용 중이지 않은 볼륨(어떤 컨테이너에도 연결되지 않은 볼륨)도 함께 삭제한다. <strong>이 옵션은 중요한 데이터가 저장된 볼륨을 실수로 삭제할 수 있으므로 사용에 각별한 주의가 필요하다.</strong><br>docker system prune --volumes<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>-f, --force</strong>: 사용자 확인 프롬프트를 생략하고 즉시 정리 작업을 수행한다. 스크립트나 자동화된 작업에 유용하다.<br>docker system prune -f<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>--filter \"until=timestamp\"</strong>: 지정된 타임스탬프 이전에 생성된 리소스만 삭제 대상으로 필터링한다. Go duration 문자열(예: \"24h\", \"10m\")도 사용할 수 있다.<br>docker system prune --filter \"until=24h\"<br></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>가장 강력한 정리 명령어 중 하나는 다음과 같다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker system prune --all --volumes -f<br></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>(User Query) 이 명령어는 확인 절차 없이 중지된 모든 컨테이너, 사용되지 않는 모든 네트워크, 사용되지 않는 모든 이미지 (댕글링 이미지 포함), 사용되지 않는 모든 볼륨, 그리고 빌드 캐시를 삭제한다. Docker 환경을 초기 상태에 가깝게 정리할 수 있지만, 데이터 손실 위험이 크므로 신중하게 사용해야 한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>docker system prune 외에도 특정 리소스 타입별로 정리하는 명령어들이 존재한다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>docker container prune: 중지된 모든 컨테이너 삭제.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker image prune: 댕글링 이미지 삭제. -a 옵션 사용 시 사용되지 않는 모든 이미지 삭제.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker volume prune: 사용되지 않는 로컬 볼륨 삭제 (기본적으로 익명 볼륨만, -a 옵션으로 명명된 볼륨 포함).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker network prune: 사용되지 않는 네트워크 삭제.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>주기적으로 docker system df로 디스크 사용량을 확인하고, docker system prune 관련 명령어들을 적절히 사용하여 시스템을 깨끗하게 유지하는 것이 좋다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>8. Docker 컨테이너 내 Python 모듈 설치</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker를 사용하여 Python 애플리케이션을 컨테이너화할 때, 필요한 Python 모듈(패키지)을 이미지에 포함시키거나 실행 중인 컨테이너에 설치하는 방법을 이해하는 것이 중요하다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>8.1. Dockerfile을 이용한 Python 모듈 설치 (이미지 빌드 시)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Python 애플리케이션용 Docker 이미지를 빌드할 때, Dockerfile 내에서 pip 명령어를 사용하여 의존성 모듈을 설치하는 것이 일반적이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>기본 Python Dockerfile 구조 예시</strong>:<br># Use an official Python runtime as a parent image<br>FROM python:3.11-slim-bullseye<br><br># Set the working directory in the container<br>WORKDIR /usr/src/app<br><br># Copy the current directory contents into the container at /usr/src/app<br># For optimization, copy requirements.txt first and install dependencies<br>COPY requirements.txt./<br>RUN pip install --no-cache-dir -r requirements.txt<br><br># Copy the rest of the application code<br>COPY..<br><br># Make port 80 available to the world outside this container (if your app uses a port)<br># EXPOSE 80<br><br># Define environment variable (example)<br># ENV NAME World<br><br># Run app.py when the container launches<br>CMD [\"python\", \"your_app.py\"]<br>(Outline, based on common Python Dockerfile patterns)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>requirements.txt 파일을 사용한 모듈 설치</strong>: 가장 권장되는 방법은 requirements.txt 파일에 필요한 모든 모듈과 버전을 명시하고, 이를 Dockerfile에서 설치하는 것이다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>프로젝트 루트에 requirements.txt 파일을 생성하고 의존성을 나열한다. 예시 requirements.txt:<br>SomePackage==1.0.4<br>AnotherPackage&gt;=2.0<br>requests<br>(Outline, User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Dockerfile에서 requirements.txt 파일을 먼저 복사하고 pip install을 실행한다.<br>COPY requirements.txt./<br>RUN pip install --no-cache-dir -r requirements.txt<br>(Outline) --no-cache-dir 옵션은 pip 캐시를 저장하지 않아 이미지 크기를 줄이는 데 도움이 된다. (Outline)</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이러한 방식은 Docker의 빌드 캐시를 효율적으로 활용하는 데 매우 중요하다. Docker 이미지는 여러 계층(layer)으로 구성되며, Dockerfile의 각 명령어는 새로운 계층을 생성한다. Docker는 빌드 시 이전 빌드와 변경되지 않은 계층은 캐시에서 재사용한다. Python 애플리케이션의 의존성(requirements.txt)은 소스 코드 자체보다 변경 빈도가 낮다. 따라서 requirements.txt를 먼저 복사하고 의존성을 설치하는 계층을 만든 후, 애플리케이션 소스 코드를 복사하는 계층을 만들면, 소스 코드만 변경되었을 경우 의존성 설치 계층은 캐시에서 재사용되어 빌드 시간을 크게 단축할 수 있다. 만약 모든 파일을 한 번에 복사(COPY..)한 후 pip install을 실행하면, 코드의 작은 변경만으로도 의존성 설치 단계까지 캐시가 무효화되어 매번 새로 설치하게 된다. 이 원리는 Dockerfile 작성 시 빌드 최적화의 핵심 개념 중 하나이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Dockerfile에서 직접 pip install 실행 (단일 모듈 또는 특정 경우)</strong>: requirements.txt를 사용하지 않고 Dockerfile 내에서 직접 RUN 명령어로 pip를 실행하여 모듈을 설치할 수도 있다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>특정 버전 설치: RUN python -m pip install SomePackage==1.0.4 (User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>업그레이드: RUN python -m pip install --upgrade SomePackage (User Query)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>최소 버전 지정: RUN python -m pip install \"SomePackage&gt;=1.0.4\" (User Query)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>8.2. 실행 중인 컨테이너에 Python 모듈 설치 (디버깅 및 테스트용)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>이미 실행 중인 컨테이너에 임시로 Python 모듈을 설치해야 할 경우, docker exec 명령어를 사용할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>먼저, 대상 컨테이너의 셸에 접속한다:<br>docker exec -it &lt;container_name_or_id&gt; /bin/bash<br>(Outline)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>컨테이너 내부 셸에서 pip 명령어를 사용하여 모듈을 설치한다:<br>python -m pip install SomePackage<br>(Outline) 또는 특정 버전:<br>python -m pip install SomePackage==1.2.3<br></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>주의</strong>: 이 방법으로 설치된 모듈은 해당 컨테이너 인스턴스에만 적용되며, 컨테이너가 중지되고 삭제되면 변경 사항은 사라진다. 즉, 일시적인 변경이며 영구적이지 않다. 프로덕션 환경에서는 Dockerfile을 통해 이미지에 의존성을 포함시키는 것이 올바른 방법이다. 디버깅이나 빠른 테스트 목적으로만 사용하는 것이 좋다. 만약 이러한 변경 사항을 영구적으로 유지하고 싶다면 docker commit 명령어를 사용하여 새로운 이미지를 생성할 수 있지만, 이는 일반적으로 권장되지 않는 워크플로우이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>9. Ubuntu에서 Docker 사용 시 일반적인 문제 해결</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker를 사용하다 보면 몇 가지 일반적인 문제에 직면할 수 있다. 여기서는 자주 발생하는 포트 바인딩 오류와 볼륨 지정 오류에 대한 해결 방법을 설명한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>9.1. 포트 바인딩 오류</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>컨테이너 실행 시 -p 또는 --publish 옵션으로 포트를 매핑할 때, 호스트의 해당 포트가 이미 사용 중이면 오류가 발생한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>오류 메시지</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Error starting userland proxy: listen tcp 0.0.0.0:&lt;port_number&gt;: bind: address already in use</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Bind for 0.0.0.0:&lt;port_number&gt; failed: port is already allocated</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>원인 및 해결</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>\"address already in use\"</strong>: 이 오류는 Docker 컨테이너가 아닌 다른 프로세스가 호스트 머신의 해당 포트를 이미 사용하고 있을 때 발생한다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>진단</strong>: sudo lsof -i:&lt;port_number&gt; (예: sudo lsof -i:8080) 명령어를 사용하여 어떤 프로세스가 해당 포트를 점유하고 있는지 확인한다. 또는 sudo netstat -tulnp | grep &lt;port_number&gt; 또는 sudo ss -tulnp | grep &lt;port_number&gt; 명령어를 사용할 수도 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>해결 방법 1: 충돌 프로세스 종료</strong>: 확인된 프로세스 ID(PID)를 sudo kill &lt;PID&gt; 명령어로 종료시킨다. 이후 Docker 컨테이너를 다시 실행한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>해결 방법 2: 다른 호스트 포트 사용</strong>: Docker 컨테이너를 실행할 때, 호스트의 다른 사용 가능한 포트로 매핑한다. 예를 들어, 8080 포트가 사용 중이라면 8081 포트로 변경한다: docker run -p 8081:80....</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>\"port is already allocated\"</strong>: 이 오류는 다른 Docker 컨테이너가 이미 해당 호스트 포트를 사용하고 있을 때 발생한다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>진단</strong>: docker ps 명령어로 실행 중인 컨테이너 목록과 매핑된 포트를 확인하여 어떤 컨테이너가 해당 포트를 사용 중인지 찾는다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>해결 방법</strong>: 충돌하는 기존 컨테이너를 중지(docker stop &lt;container_id&gt;)하거나, 새로 실행할 컨테이너에 다른 호스트 포트를 할당한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>오류로 인해 컨테이너 시작에 실패한 경우, 해당 컨테이너는 중지된 상태로 남아있을 수 있다. docker rm &lt;container_name_or_id&gt; 명령어로 불필요한 컨테이너를 정리하는 것이 좋다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>9.2. 볼륨 지정 오류</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>docker run 명령어에서 -v 또는 --mount 옵션으로 볼륨을 마운트할 때 경로 지정 문제로 오류가 발생할 수 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>오류 메시지</strong>: Error response from daemon: invalid volume specification: \"&lt;volume_string&gt;\"</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>주요 원인</strong>: 컨테이너 내부 마운트 경로를 절대 경로로 지정하지 않은 경우이다. Docker에서 호스트 OS와 컨테이너 간 디렉토리를 마운트할 때, 컨테이너 측 경로는 반드시 절대 경로여야 한다. 호스트 측 경로는 상대 경로일 수 있으며, 이 경우 Docker CLI가 실행되는 현재 작업 디렉토리를 기준으로 해석되거나 Docker 데몬의 특정 기본 경로를 기준으로 할 수 있다. 그러나 컨테이너 파일 시스템은 자체적으로 격리된 루트(/)를 가지므로, 컨테이너 내의 경로는 이 루트를 기준으로 명확하게 지정되어야 한다. 상대 경로를 사용하면 Docker가 컨테이너 내에서 정확한 마운트 지점을 결정할 수 없어 오류가 발생한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>잘못된 예시</strong>:<br>docker container run -v /abc/webap/:nginx/html...&nbsp; # 컨테이너 경로가 상대 경로<br>docker container run -v /abc/webap/:./nginx/html... # 컨테이너 경로가 상대 경로<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>올바른 예시</strong>:<br>docker container run -v /abc/webap:/nginx/html... # 컨테이너 경로가 절대 경로<br>또한, 호스트 경로가 실제로 존재하는지, 명명된 볼륨을 사용하는 경우 볼륨 이름의 구문이 올바른지 확인하는 것도 중요하다. 이러한 경로 해석의 미묘한 차이를 이해하는 것은 볼륨 마운트 관련 문제를 예방하고 신속하게 해결하는 데 도움이 된다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>10. Ubuntu Docker 보안 강화</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Docker를 프로덕션 환경에서 사용하거나 민감한 데이터를 다룰 때는 보안을 강화하는 것이 매우 중요하다. 다음은 Ubuntu에서 Docker 보안을 향상시키기 위한 주요 원칙과 방법들이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>10.1. Docker 보안 기본 원칙</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>최소 권한의 원칙 (Principle of Least Privilege)</strong>: 컨테이너와 사용자에게 필요한 최소한의 권한만 부여한다. 예를 들어, 컨테이너 내부에서 애플리케이션을 루트 사용자로 실행하지 않도록 한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>심층 방어 (Defense in Depth)</strong>: 단일 보안 계층에 의존하지 않고, 호스트, Docker 데몬, 이미지, 컨테이너, 네트워크 등 여러 계층에 걸쳐 보안 조치를 적용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>정기적인 업데이트</strong>: Docker Engine, 호스트 운영체제(Ubuntu), 사용 중인 모든 Docker 이미지를 최신 상태로 유지하여 알려진 취약점을 패치한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>10.2. 민감 데이터의 안전한 관리</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>애플리케이션 비밀번호, API 키, TLS 인증서와 같은 민감한 정보는 Docker 이미지에 직접 포함하거나 환경 변수를 통해 평문으로 전달하는 것을 피해야 한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>환경 변수의 한계</strong>: 환경 변수(-e 또는 --env 옵션)는 간단하게 데이터를 전달할 수 있지만, 다음과 같은 보안적 약점이 있다 :</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>docker inspect &lt;container_id&gt; 명령어로 노출될 수 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>컨테이너 내부에서 실행되는 모든 프로세스가 접근할 수 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>로그 파일에 실수로 기록될 수 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>매우 민감한 데이터에는 적합하지 않다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker Secrets (주로 Swarm 모드용)</strong>: Docker Secrets는 Docker Swarm 모드에서 민감한 데이터를 안전하게 관리하기 위해 설계된 기능이다. (User Query)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>개요</strong>: 비밀번호, API 키, TLS 인증서 등의 민감 데이터를 중앙에서 관리하고, 필요한 서비스(컨테이너)에만 안전하게 전달한다. 데이터는 전송 중 및 Swarm Raft 로그에 저장될 때 암호화된다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>작동 방식</strong>: Secrets는 컨테이너 내부에 인메모리 파일 시스템으로 마운트된다 (Linux의 경우 기본적으로 /run/secrets/&lt;secret_name&gt;). 애플리케이션은 이 파일을 읽어 민감한 데이터를 사용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>중요 사항</strong>: Docker Secrets는 공식적으로 Swarm 서비스에서만 사용 가능하다. 독립 실행형 컨테이너에서 사용하려면 해당 컨테이너를 단일 노드 Swarm의 서비스로 실행해야 하는 번거로움이 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Secrets 생성</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>표준 입력(STDIN)으로부터: printf \"my_password\" | docker secret create my_db_password -</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>파일로부터: docker secret create my_site_cert /path/to/cert.pem</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>목록 확인: docker secret ls</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>상세 정보 확인: docker secret inspect &lt;secret_name&gt;</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>삭제: docker secret rm &lt;secret_name&gt; (실행 중인 서비스에서 사용 중이면 삭제 불가)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>서비스에서 Secrets 사용</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>docker service create 사용 시: docker service create --name myservice --secret my_secret_data myimage</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker-compose.yml 파일 ( docker stack deploy 용):<br>version: \'3.8\' # 또는 secrets를 지원하는 최신 버전<br>services:<br>&nbsp; myapp:<br>&nbsp; &nbsp; image: myapp_image<br>&nbsp; &nbsp; secrets:<br>&nbsp; &nbsp; &nbsp; - db_password # 짧은 구문: secret 이름 \'db_password\', 컨테이너 내 경로 /run/secrets/db_password<br>&nbsp; &nbsp; &nbsp; # - source: app_config_secret # 긴 구문 예시<br>&nbsp; &nbsp; &nbsp; # &nbsp; target: /etc/app/config<br>&nbsp; &nbsp; &nbsp; # &nbsp; uid: \'1000\'<br>&nbsp; &nbsp; &nbsp; # &nbsp; gid: \'1000\'<br>&nbsp; &nbsp; &nbsp; # &nbsp; mode: 0400<br>&nbsp; &nbsp; environment:<br>&nbsp; &nbsp; &nbsp; # 애플리케이션이 이 파일에서 비밀번호를 읽도록 설정<br>&nbsp; &nbsp; &nbsp; DB_PASSWORD_FILE: /run/secrets/db_password<br>secrets:<br>&nbsp; db_password:<br>&nbsp; &nbsp; file:./db_password.txt # 호스트의 로컬 파일에서 secret 값 로드<br>&nbsp; # app_config_secret:<br>&nbsp; # &nbsp; external: true # Swarm에 이미 secret이 존재하는 경우<br>애플리케이션 코드는 환경 변수(예: DB_PASSWORD_FILE)가 가리키는 파일 경로에서 실제 secret 값을 읽도록 수정되어야 한다. 예를 들어, 공식 MySQL 이미지는 MYSQL_ROOT_PASSWORD_FILE 환경 변수를 통해 파일에서 비밀번호를 읽는 기능을 지원한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>Docker Secrets는 Swarm 환경에서 편리하고 통합된 민감 데이터 관리 방법을 제공하지만, 모든 시나리오에 적합한 것은 아니다. 독립 실행형 컨테이너나 Kubernetes와 같은 다른 오케스트레이션 환경에서는 HashiCorp Vault , AWS Secrets Manager, Azure Key Vault와 같은 외부 전용 시크릿 관리 도구를 고려하는 것이 좋다. 이는 Docker가 제공하는 기본 기능 외에, 조직의 요구사항이나 기존 인프라에 따라 더 강력하고 중앙화된 솔루션을 선택할 수 있음을 시사한다. 즉, 시크릿 관리 전략은 배포 모델과 조직의 보안 정책에 따라 계층적으로 접근해야 한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>외부 시크릿 관리 도구</strong>: HashiCorp Vault와 같은 도구는 보다 정교한 시크릿 관리, 접근 제어, 감사 로깅 기능을 제공하며, 다양한 환경과 통합될 수 있다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>10.3. 컨테이너화된 웹 애플리케이션 SSL/TLS 적용</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>웹 애플리케이션을 Docker 컨테이너로 배포할 때, 클라이언트와 서버 간의 통신을 암호화하기 위해 SSL/TLS를 적용하는 것은 필수적이다. (User Query)</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>일반적인 패턴: Nginx 리버스 프록시와 SSL 종료 (SSL Termination)</strong> Nginx 컨테이너가 HTTPS (443 포트) 요청을 수신하여 SSL/TLS 핸드셰이크를 처리하고, 암호화된 트래픽을 복호화한 후 내부 네트워크를 통해 HTTP로 애플리케이션 컨테이너(예: Node.js, Python 앱)에 전달하는 방식이 널리 사용된다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>SSL/TLS 인증서 생성</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>자체 서명 인증서 (개발/테스트용)</strong>: OpenSSL 등을 사용하여 생성할 수 있다. 브라우저에서 기본적으로 신뢰하지 않으므로 경고가 표시된다.<br># 1. OpenSSL 설정 파일 준비 (예: my-site.conf [span_184](start_span)[span_184](end_span))<br># 2. 개인 키 및 인증서 생성<br>openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout my-site.key -out my-site.crt -config my-site.conf<br></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Let\'s Encrypt (프로덕션용)</strong>: 무료이며 자동화된 방식으로 신뢰할 수 있는 인증서를 발급받을 수 있다. Certbot과 같은 클라이언트를 사용하며, 도메인 소유권 검증이 필요하다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Nginx SSL 설정</strong>: Nginx 설정 파일 (nginx.conf)에 SSL 관련 지시어를 추가한다. 예시 nginx.conf 일부:<br>server {<br>&nbsp; &nbsp; listen 80;<br>&nbsp; &nbsp; server_name your_domain.com;<br>&nbsp; &nbsp; location / {<br>&nbsp; &nbsp; &nbsp; &nbsp; return 301 https://$host$request_uri; # HTTP를 HTTPS로 리디렉션<br>&nbsp; &nbsp; }<br>}<br><br>server {<br>&nbsp; &nbsp; listen 443 ssl;<br>&nbsp; &nbsp; server_name your_domain.com;<br><br>&nbsp; &nbsp; ssl_certificate /etc/ssl/certs/my-site.crt; &nbsp; &nbsp; &nbsp; # Nginx 컨테이너 내부의 인증서 경로<br>&nbsp; &nbsp; ssl_certificate_key /etc/ssl/private/my-site.key; # Nginx 컨테이너 내부의 개인 키 경로<br><br>&nbsp; &nbsp; # 추가적인 SSL 설정 (프로토콜, 암호화 스위트 등)<br>&nbsp; &nbsp; # ssl_protocols TLSv1.2 TLSv1.3;<br>&nbsp; &nbsp; # ssl_ciphers \'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...\';<br><br>&nbsp; &nbsp; location / {<br>&nbsp; &nbsp; &nbsp; &nbsp; proxy_pass http://app_container_name:app_port; # 업스트림 애플리케이션 컨테이너<br>&nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header Host $host;<br>&nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header X-Real-IP $remote_addr;<br>&nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>&nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header X-Forwarded-Proto $scheme;<br>&nbsp; &nbsp; }<br>}<br>Nginx용 Dockerfile에서는 이 설정 파일과 인증서/키 파일을 이미지에 복사하거나, 볼륨 또는 Docker Secrets(Swarm 사용 시)를 통해 마운트할 수 있다.<br>FROM nginx:latest<br>COPY nginx.conf /etc/nginx/nginx.conf<br>COPY my-site.crt /etc/ssl/certs/my-site.crt<br>COPY my-site.key /etc/ssl/private/my-site.key<br>Docker Compose를 사용하면 Nginx와 애플리케이션 컨테이너를 함께 정의하고 관리하기 용이하다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>10.4. 주요 Docker 보안 모범 사례</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>다음은 Docker 환경의 보안을 강화하기 위한 핵심적인 모범 사례들이다. 이러한 관행들은 개발 초기 단계부터 보안을 고려하는 \"Shift Left\" 접근 방식을 반영하며, 이는 단순히 런타임 설정뿐만 아니라 이미지 생성 및 관리 전반에 걸친 지속적인 노력을 포함한다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>컨테이너를 비루트(non-root) 사용자로 실행</strong>: 기본적으로 컨테이너는 내부에서 루트 사용자로 실행될 수 있으며, 이는 컨테이너가 손상될 경우 심각한 보안 위협이 될 수 있다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Dockerfile에서 USER &lt;non_root_user&gt;[:&lt;group&gt;] 지시어를 사용하여 컨테이너 실행 사용자를 지정한다. 필요한 경우 먼저 사용자와 그룹을 생성해야 한다 (예: RUN groupadd -r appgroup &amp;&amp; useradd -r -g appgroup appuser).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker run 명령어 실행 시 -u &lt;username_or_UID&gt; 옵션을 사용할 수 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>최소한의 기본 이미지 사용</strong>: 이미지 크기를 줄이고 불필요한 구성 요소 및 종속성을 제거하여 공격 표면을 최소화한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>alpine, busybox와 같은 경량 이미지나 Google의 distroless 이미지(예: gcr.io/distroless/static-debian11)를 사용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>이미지 정기적 취약점 스캔</strong>: 이미지에 포함된 소프트웨어 패키지의 알려진 취약점을 탐지하고 수정한다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>docker scan &lt;image_name&gt; (Snyk 또는 Docker Scout 기반) 명령어를 사용하거나, Trivy, Clair와 같은 오픈소스 스캐너를 활용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>CI/CD 파이프라인에 이미지 스캔 단계를 통합하여 자동화한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>신뢰할 수 있는 레지스트리(예: Docker Hub 유료 플랜, Harbor)의 내장 스캔 기능을 활용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>컨테이너 리소스 사용량 제한</strong>: 단일 컨테이너가 과도한 시스템 리소스(CPU, 메모리)를 사용하여 서비스 거부(DoS) 공격을 유발하거나 다른 컨테이너의 성능에 영향을 미치는 것을 방지한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker run 명령어의 --memory &lt;limit&gt;, --cpus &lt;limit&gt;, --pids-limit 등의 옵션을 사용하여 리소스를 제한한다. 이는 Linux의 cgroups 기능을 통해 구현된다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>보안 컨테이너 레지스트리 사용 및 관리</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Docker Hub의 공식 이미지나 검증된 게시자의 이미지를 우선적으로 사용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>자체 레지스트리를 운영하는 경우, TLS를 사용하여 통신을 암호화하고, 역할 기반 접근 제어(RBAC)를 구현하여 이미지 접근 권한을 관리한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>네트워크 분리 및 API 보안</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>사용자 정의 네트워크를 생성하여 컨테이너 간 통신을 격리하고, 필요한 경우에만 서로 통신하도록 허용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Docker 데몬 API 접근을 엄격히 제어하고, 가능하면 네트워크에 노출하지 않는다. 원격 접근이 필요하다면 TLS로 암호화하고 인증을 적용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 데몬 및 호스트 OS 최신 상태 유지</strong>:</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Docker Engine 자체와 호스트 운영체제의 커널 및 관련 패키지에 대한 보안 업데이트를 정기적으로 적용한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Dockerfile 및 애플리케이션 코드 정적 분석</strong>:</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Hadolint, SonarQube와 같은 도구를 사용하여 Dockerfile의 잠재적인 보안 문제나 비효율적인 구성을 검사하고, 애플리케이션 코드의 보안 취약점을 분석한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 데몬 루트리스(Rootless) 모드 사용 (고급)</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Docker 데몬과 컨테이너를 일반 사용자로 실행하여 보안을 크게 향상시킨다. 호스트 시스템에 대한 잠재적 위험을 줄일 수 있다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>dockerd-rootless-setuptool.sh install 스크립트를 사용하여 설정할 수 있다. 일부 기능 제한이 있을 수 있으나, 점차 개선되고 있다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이러한 보안 관행들을 체계적으로 적용하면 Docker 환경의 전반적인 보안 수준을 크게 높일 수 있다. 다음 표는 주요 보안 모범 사례를 요약한 것이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>표 10.1: Docker 보안 모범 사례 체크리스트</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>카테고리</th><th>모범 사례</th><th>근거/이점</th><th>구현 방법 (간략히)</th></tr></thead><tbody><tr><td><strong>이미지 보안</strong></td><td>최소 기본 이미지 사용</td><td>공격 표면 감소, 이미지 크기 최적화</td><td>alpine, distroless 등 사용</td></tr><tr><td></td><td>이미지 취약점 스캔</td><td>알려진 취약점 사전 탐지 및 완화</td><td>docker scan, Trivy, Clair 등 CI/CD 통합</td></tr><tr><td></td><td>신뢰할 수 있는 이미지 소스 사용</td><td>악성 코드나 변조된 이미지 위험 감소</td><td>Docker Hub 공식 이미지, 검증된 게시자, 자체 보안 레지스트리 사용</td></tr><tr><td></td><td>멀티스테이지 빌드 활용</td><td>최종 이미지에서 빌드 도구 및 불필요한 아티팩트 제거, 이미지 크기 최적화</td><td>Dockerfile에서 여러 FROM 문 사용</td></tr><tr><td><strong>컨테이너 런타임 보안</strong></td><td>비루트 사용자로 컨테이너 실행</td><td>컨테이너 탈출 시 호스트 시스템 피해 최소화 (최소 권한 원칙)</td><td>Dockerfile에 USER 지시어 사용, docker run -u 옵션</td></tr><tr><td></td><td>리소스 사용량 제한</td><td>DoS 공격 방지, 시스템 안정성 확보</td><td>docker run 시 --memory, --cpus 등 옵션 사용</td></tr><tr><td></td><td>읽기 전용 루트 파일 시스템 사용</td><td>컨테이너 내부 파일 시스템 변경 방지, 불변성 강화</td><td>docker run --read-only 옵션 사용 (쓰기 가능한 tmpfs 마운트 필요할 수 있음)</td></tr><tr><td></td><td>AppArmor/Seccomp 프로파일 적용</td><td>컨테이너의 시스템 콜 제한, 커널 수준 보안 강화</td><td>Docker 기본 프로파일 사용 또는 사용자 정의 프로파일 적용</td></tr><tr><td><strong>호스트 및 데몬 보안</strong></td><td>호스트 OS 및 Docker Engine 최신 상태 유지</td><td>알려진 취약점 패치</td><td>정기적인 시스템 업데이트 및 Docker 버전 업그레이드</td></tr><tr><td></td><td>Docker 데몬 API 접근 제어</td><td>무단 접근 및 데몬 제어 방지</td><td>Unix 소켓 사용 권장, TCP 소켓 사용 시 TLS 인증 적용</td></tr><tr><td></td><td>루트리스 모드 사용 (가능한 경우)</td><td>데몬 및 컨테이너를 비루트 사용자로 실행하여 호스트 보안 강화</td><td>dockerd-rootless-setuptool.sh 사용</td></tr><tr><td><strong>데이터 보안</strong></td><td>민감 데이터 Docker Secrets 사용 (Swarm)</td><td>비밀번호, API 키 등을 안전하게 관리 및 컨테이너에 전달</td><td>docker secret create, 서비스 정의 시 secrets 블록 사용</td></tr><tr><td></td><td>외부 시크릿 관리 도구 활용</td><td>Swarm 외부 환경 또는 고급 시크릿 관리 요구사항 충족</td><td>HashiCorp Vault, AWS Secrets Manager 등 연동</td></tr><tr><td></td><td>볼륨 데이터 암호화 (필요시)</td><td>저장된 데이터 보호</td><td>호스트 수준 디스크 암호화 (예: LUKS) 또는 애플리케이션 수준 암호화</td></tr><tr><td><strong>네트워크 보안</strong></td><td>사용자 정의 네트워크로 컨테이너 분리</td><td>불필요한 컨테이너 간 통신 차단, 네트워크 세분화</td><td>docker network create, 컨테이너 실행 시 --network 옵션 사용</td></tr><tr><td></td><td>웹 애플리케이션에 SSL/TLS 적용</td><td>클라이언트-서버 간 통신 암호화</td><td>리버스 프록시(Nginx 등)에서 SSL 종료, Let\'s Encrypt 등 사용</td></tr><tr><td></td><td>불필요한 포트 노출 최소화</td><td>공격 표면 감소</td><td>Dockerfile의 EXPOSE는 문서화 목적, docker run -p로 실제 필요한 포트만 매핑</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>11. 결론 및 추가 자료</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>본 매뉴얼은 Ubuntu 24.04 LTS 환경에서 Docker를 설치하고 기본적인 사용법부터 컨테이너 관리, 시스템 유지보수, Python 애플리케이션 컨테이너화, 일반적인 문제 해결, 그리고 보안 강화 방안에 이르기까지 포괄적인 내용을 다루었다. Docker는 개발 환경의 일관성을 제공하고, 배포 프로세스를 단순화하며, 마이크로서비스 아키텍처 구현을 용이하게 하는 등 현대 애플리케이션 개발 및 운영에 있어 강력하고 유연한 도구임이 확인되었다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>특히, Dockerfile 최적화, 리소스 관리, 보안 모범 사례 적용은 안정적이고 효율적인 Docker 활용을 위해 매우 중요하다. 예를 들어, requirements.txt를 활용한 의존성 관리와 Docker 빌드 캐시의 이해는 이미지 빌드 시간을 단축시키며, docker system prune과 같은 명령어를 통한 주기적인 시스템 정리는 디스크 공간을 효율적으로 관리하는 데 기여한다. 또한, Docker Secrets나 SSL/TLS 적용과 같은 보안 조치는 민감한 데이터를 보호하고 안전한 서비스를 운영하는 데 필수적이다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Docker의 세계는 방대하며, 본 매뉴얼에서 다룬 내용은 그 시작점에 해당한다. 사용자의 숙련도와 요구사항에 따라 더 많은 고급 기능과 개념을 학습할 필요가 있다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>추가 학습을 위한 자료</strong>:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Docker 공식 문서 (Docker Docs)</strong>: <a href=\"https://docs.docker.com/\">https://docs.docker.com/</a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>가장 정확하고 최신의 정보를 제공하는 기본 자료이다. 설치, 명령어 레퍼런스, 네트워킹, 스토리지, 보안 등 모든 주제를 망라한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker Hub</strong>: <a href=\"https://hub.docker.com/\">https://hub.docker.com/</a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>수많은 공식 및 커뮤니티 제공 Docker 이미지를 검색하고 공유할 수 있는 레지스트리이다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker 커뮤니티 포럼 (Docker Community Forums)</strong>: <a href=\"https://forums.docker.com/\">https://forums.docker.com/</a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>다른 Docker 사용자와 질문을 주고받거나 문제 해결 방법을 논의할 수 있는 공간이다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>관련 GitHub 저장소</strong>:</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Docker Engine: <a href=\"https://github.com/moby/moby\">https://github.com/moby/moby</a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Docker Compose: <a href=\"https://github.com/docker/compose\">https://github.com/docker/compose</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>향후 탐색해 볼 고급 주제</strong>:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Docker Compose</strong>: YAML 파일을 사용하여 다중 컨테이너 애플리케이션을 정의하고 실행하는 도구이다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Docker Swarm 및 Kubernetes</strong>: 컨테이너 오케스트레이션 도구로, 여러 호스트에 걸쳐 컨테이너화된 애플리케이션을 배포, 확장, 관리하는 기능을 제공한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>고급 네트워킹</strong>: 오버레이 네트워크, 맥브랜(macvlan) 네트워크 등 다양한 네트워크 드라이버와 구성 방법을 이해한다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>최적화된 멀티스테이지 Dockerfile 빌드</strong>: 빌드 컨텍스트를 줄이고 최종 이미지 크기를 최소화하기 위한 고급 Dockerfile 작성 기법이다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>루트리스 Docker (Rootless Docker)</strong>: 보안을 강화하기 위해 Docker 데몬과 컨테이너를 일반 사용자로 실행하는 방법이다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>꾸준한 학습과 실습을 통해 Docker의 강력한 기능을 최대한 활용하여 개발 및 운영 효율성을 높일 수 있기를 바란다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>참고 자료</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><a href=\"https://docs.docker.com/engine/install/ubuntu\">https://docs.docker.com/engine/install/ubuntu</a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>How to Install Docker on Ubuntu 22.04 and 24.04 - phoenixNAP, <a href=\"https://phoenixnap.com/kb/install-docker-ubuntu\">https://phoenixnap.com/kb/install-docker-ubuntu</a> </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Ubuntu | Docker Docs, <a href=\"https://docs.docker.com/engine/install/ubuntu/\">https://docs.docker.com/engine/install/ubuntu/</a> </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>How to Install Docker on Ubuntu 24.04 | Vultr Docs, <a href=\"https://docs.vultr.com/how-to-install-docker-on-ubuntu-24-04 \">https://docs.vultr.com/how-to-install-docker-on-ubuntu-24-04 </a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>How To Remove Docker Images, Containers, and Volumes ..., <a href=\"https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes\">https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes</a> </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Simplifying Containerization With Docker Run Command - BuildPiper, <a href=\"https://www.buildpiper.io/blogs/simplifying-containerization-with-docker-run-command/\">https://www.buildpiper.io/blogs/simplifying-containerization-with-docker-run-command/</a> </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Running containers | Docker Docs, <a href=\"https://docs.docker.com/engine/containers/run/ \">https://docs.docker.com/engine/containers/run/ </a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker container exec, <a href=\"https://docs.docker.com/reference/cli/docker/container/exec/ \">https://docs.docker.com/reference/cli/docker/container/exec/ </a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Docker Prune: A Complete Guide with Hands-On Examples - DataCamp, https://www.datacamp.com/tutorial/docker-prune </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Tidy up with docker system prune - Depot, https://depot.dev/blog/docker-system-prune </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>How to use docker system df command to check disk usage - LabEx, https://labex.io/tutorials/docker-how-to-use-docker-system-df-command-to-check-disk-usage-555247 </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker system - Docker Docs, https://docs.docker.com/reference/cli/docker/system/ </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Docker Error Bind: Address Already in Use | Baeldung on Linux, https://www.baeldung.com/linux/docker-address-already-in-use </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>[Docker CE] 도커 디렉토리 마운트 설정 에러 (Error response from ..., https://nirsa.tistory.com/54 </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Docker Security: 5 Risks and 5 Best Practices for Securing Your Containers - Tigera.io, https://www.tigera.io/learn/guides/container-security-best-practices/docker-security/ </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Docker Container Security Best Practices for Modern Applications - Wiz, https://www.wiz.io/academy/docker-container-security-best-practices </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Are there any comprehensive beginner-friendly guides to secure Docker or should I just switch to Podman? - Reddit, https://www.reddit.com/r/selfhosted/comments/1iwkul6/are_there_any_comprehensive_beginnerfriendly/ </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Securing Passwords in Docker | Baeldung on Ops, https://www.baeldung.com/ops/docker-securing-passwords </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Manage sensitive data with Docker secrets | Docker Docs, https://docs.docker.com/engine/swarm/secrets/ </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>How to use secrets in Docker Compose, https://docs.docker.com/compose/how-tos/use-secrets/ </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>docker secret create - Docker Docs, https://docs.docker.com/reference/cli/docker/secret/create/ </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>How to secure a Docker registry with SSL/TLS encryption - LabEx, https://labex.io/tutorials/docker-how-to-secure-a-docker-registry-with-ssl-tls-encryption-411601 </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Securing Docker Containers with SSL/TLS Certificates - GlobalSign, https://www.globalsign.com/en/blog/securing-docker-containers-ssl-tls-certificates </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>SSL with Docker images using nginx as reverse proxy - GitHub Gist, https://gist.github.com/dahlsailrunner/679e6dec5fd769f30bce90447ae80081 </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>How To Secure a Containerized Node.js Application with Nginx, Let\'s Encrypt, and Docker Compose | DigitalOcean, https://www.digitalocean.com/community/tutorials/how-to-secure-a-containerized-node-js-application-with-nginx-let-s-encrypt-and-docker-compose</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->','Docker 설치 및 활용','','publish','open','closed','','docker-%ec%84%a4%ec%b9%98-%eb%b0%8f-%ed%99%9c%ec%9a%a9','','','2025-10-17 19:03:40','2025-10-17 10:03:40','',0,'http://kbsi',0,'docs','',0),
(19,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p><strong>모델을 위한 친숙한 인터페이스: Ubuntu에 OpenWebUI 설치</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>OpenWebUI는 Ollama로 실행되는 로컬 LLM과 상호작용할 수 있는 웹 기반의 사용자 친화적인 인터페이스를 제공합니다. Docker를 사용하여 설치합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>사전 준비</strong>: Docker와 Ollama가 설치되어 실행 중이어야 합니다. Ollama 서비스는 기본적으로 호스트의 11434 포트에서 실행됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>OpenWebUI Docker 컨테이너 실행</strong>: 터미널에서 다음 Docker 명령어를 실행합니다. 이 명령어는 OpenWebUI 이미지를 다운로드하고, Ollama 서비스와 통신할 수 있도록 설정하여 컨테이너를 실행합니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><code>docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=http://127.0.0.1:11434 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>d: 컨테이너를 백그라운드에서 실행합니다 (detached mode).</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>p 3000:8080: 호스트의 3000번 포트를 컨테이너의 8080번 포트에 연결합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>e OLLAMA_BASE_URL=http://127.0.0.1:11434: OpenWebUI 컨테이너가 호스트에서 실행 중인 Ollama API에 접속할 주소를 설정합니다. 이는 매우 중요한 설정입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>v open-webui:/app/backend/data: open-webui라는 Docker 볼륨을 생성하여 컨테이너의 /app/backend/data 디렉터리에 마운트합니다. 이를 통해 OpenWebUI의 설정, 대화 기록 등 데이터를 영구적으로 보존할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>-name open-webui: 컨테이너의 이름을 open-webui로 지정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>-restart always: 시스템 재부팅 시 또는 컨테이너가 예기치 않게 종료될 경우 자동으로 다시 시작하도록 설정합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><a href=\"http://ghcr.io/open-webui/open-webui:main:\">ghcr.io/open-webui/open-webui:main:</a> 사용할 OpenWebUI의 공식 Docker 이미지입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>Ollama가 호스트에 직접 설치된 경우, OpenWebUI 컨테이너가 호스트의 네트워크 서비스에 접근할 수 있도록 OLLAMA_BASE_URL 환경 변수를 통해 Ollama 서버 주소를 명시적으로 지정하는 것이 중요합니다. 이 설정은 컨테이너화된 애플리케이션(OpenWebUI)과 호스트에서 실행되는 서비스(Ollama) 간의 통신을 원활하게 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>OpenWebUI 접속</strong>: 웹 브라우저를 열고 주소창에 http://localhost:3000을 입력하여 OpenWebUI에 접속합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>초기 설정</strong>: 처음 접속 시 관리자 계정을 생성하라는 메시지가 나타날 수 있습니다. 안내에 따라 계정을 생성합니다. 이후 OpenWebUI 설정에서 Ollama에 연결되었는지 확인하고, 필요하다면 모델을 OpenWebUI 인터페이스 내에서 직접 다운로드할 수도 있습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>Open WebUI의 RAG (검색 증강 생성) 기능</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Open WebUI는 RAG 기술을 활용하여 언어 모델의 응답 정확도와 관련성을 높이는 사용자 친화적인 AI 플랫폼입니다. RAG는 대규모 언어 모델(LLM)이 자체 학습 데이터 외에 외부 지식 소스에서 정보를 검색하고 활용하여 답변을 생성하도록 돕는 기술입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>RAG의 작동 원리:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>검색 (Retrieval):</strong> 사용자의 질문이나 프롬프트와 관련된 정보를 외부 데이터베이스(문서, 웹 콘텐츠, 멀티미디어 등)에서 검색합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>증강 (Augmentation):</strong> 검색된 관련 정보를 원래 프롬프트에 추가하여 언어 모델에 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>생성 (Generation):</strong> 증강된 프롬프트를 바탕으로 LLM이 보다 정확하고 맥락에 맞는 답변을 생성합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>Open WebUI의 RAG 주요 특징 및 이점:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>다양한 문서 형식 지원:</strong> PDF, DOCX, Markdown, TXT 등 여러 문서 형식의 업로드를 지원하며, 자동 문서 분할 및 벡터화를 통해 지식 기반을 구축합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>로컬 및 원격 RAG 통합:</strong> 로컬 문서뿐만 아니라 웹 콘텐츠, YouTube 동영상과 같은 멀티미디어 소스에서도 정보를 검색하고 통합할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>실시간 정보 반영:</strong> 모델이 학습된 이후에 발생한 새로운 정보나 특정 도메인의 전문 지식을 실시간으로 활용하여 최신성 있는 답변을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>향상된 정확성 및 관련성:</strong> 외부 정보를 통합함으로써 AI 응답의 정확성과 사용자 쿼리에 대한 맥락적 관련성을 높입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>유연한 모델 및 임베딩 설정:</strong> Ollama 모델 및 OpenAI 호환 API와 같은 다양한 LLM을 지원하며, 임베딩 모델(검색 품질에 영향) 설정 및 변경이 가능합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>전체 컨텍스트 모드 및 하이브리드 검색:</strong> 제한된 토큰 길이를 가진 모델에서도 검색된 데이터를 효과적으로 활용하기 위해 “전체 컨텍스트 모드”를 지원하며, 하이브리드 검색 기능을 통해 검색 결과를 더욱 향상시킬 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>사용자 정의 가능성:</strong> RAG 템플릿 사용자 지정, 임베딩 모델 선택, 벡터 데이터베이스 변경 (ChromaDB, Qdrant 등) 등 다양한 설정을 통해 사용자의 특정 요구에 맞춰 최적화할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>문제 해결 용이성:</strong> RAG 관련 문제 발생 시, 관리자 설정에서 “임베딩 및 검색 우회” 또는 “전체 컨텍스트 모드” 활성화, 임베딩 모델 재설정 등을 통해 해결할 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>Open WebUI는 이러한 RAG 기능을 통해 사용자가 자신의 문서와 상호작용하고, 대화형 AI 시스템을 구축하여 개인 및 비즈니스 요구에 맞는 지식 기반 질의응답 서비스를 구현할 수 있도록 돕습니다.</p>\n<!-- /wp:paragraph -->','OpenWebui 설치 및 운용','','publish','open','closed','','openwebui-%ec%84%a4%ec%b9%98-%eb%b0%8f-%ec%9a%b4%ec%9a%a9','','','2025-10-24 10:30:52','2025-10-24 01:30:52','',0,'http://kbsi',0,'docs','',0),
(20,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>로컬 LLM 활용: Ubuntu에 Ollama 설치</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ollama는 다양한 오픈소스 대규모 언어 모델(LLM)을 개인 컴퓨터에서 쉽게 실행할 수 있도록 지원하는 도구입니다. 단일 명령어로 설치가 가능하여 로컬 LLM 실험의 진입 장벽을 크게 낮춥니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Ollama 설치</strong>: 터미널에서 다음 명령어를 실행합니다. 이 명령어는 Ollama 설치 스크립트를 다운로드하여 실행합니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>curl -fsSL <a href=\"https://ollama.com/install.sh\">https://ollama.com/install.sh</a> | sh</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>언어 모델 다운로드 및 실행</strong>: Ollama 설치 후, 원하는 언어 모델을 다운로드하고 실행할 수 있습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예시 모델 gemma:2b (기존 gemma3:1b에서 일반적인 모델명으로 변경) 다운로드 및 실행: ollama run gemma:2b nomic-embed-text gemma3:27b qwen3:30b-a3b (모델명은 예시이며, 사용 가능한 최신 모델 확인 필요) 이 명령은 모델을 다운로드한 후 대화형 프롬프트를 시작합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>한국어 임베딩 모델 bona/bge-m3-korean 다운로드: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>ollama pull bona/bge-m3-korean</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>더 많은 모델은 Ollama 라이브러리 웹사이트(<a href=\"http://ollama.com/library\">ollama.com/library</a>)에서 찾아볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>필수 Ollama 명령어</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>명령어</th><th>설명</th><th>예시</th></tr></thead><tbody><tr><td>ollama pull &lt;model_name&gt;</td><td>지정된 모델을 다운로드합니다.</td><td>ollama pull llama3</td></tr><tr><td>ollama run &lt;model_name&gt;</td><td>지정된 모델을 다운로드(없을 경우)하고 실행합니다.</td><td>ollama run llama3</td></tr><tr><td>ollama list</td><td>로컬에 다운로드된 모델 목록을 표시합니다.</td><td>ollama list</td></tr><tr><td>ollama rm &lt;model_name&gt;</td><td>로컬에서 지정된 모델을 삭제합니다.</td><td>ollama rm llama3</td></tr><tr><td>ollama help</td><td>Ollama 명령어 도움말을 표시합니다.</td><td>ollama help</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p>이 표는 Ollama를 효과적으로 사용하기 위한 기본 명령어들을 제공하여, 사용자가 모델 관리 작업을 원활하게 수행할 수 있도록 돕습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">접속 문제 해결</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>ollama가 외부 네트워크에 연결되도록 하기 위해서는 systemd service에 환경변수를 추가해 줘야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>/etc/systemd/system/ollama.service 파일에 다음 항목 추가:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>&#91;Service]\nEnvironment=\"OLLAMA_HOST=0.0.0.0\"</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>Save and exit.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Reload systemd and restart Ollama:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl restart ollama</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">ollama 업그레이드 방법</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>ollama 는 수시로 업그레이드 됩니다. ollama github (<a href=\"https://github.com/ollama/ollama\">https://github.com/ollama/ollama</a>)를 확인하여 새로운 버전이 나왔을 경우, 위의 설치 과정 및 접속 문제 해결을 다시 실행하면 새로운 버전으로 업그레이드 됩니다. </p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>ollama  현재 버전은 다음 명령어로 확인해 볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>ollama --version</code></pre>\n<!-- /wp:code -->','Ollama 설치 및 운용','','publish','open','closed','','ollama-%ec%84%a4%ec%b9%98-%eb%b0%8f-%ec%9a%b4%ec%9a%a9','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(21,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">설치</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Dify는 LLM을 활용한 다양한 AI 애플리케이션(챗봇, RAG 시스템 등)을 개발하고 배포할 수 있는 플랫폼입니다. Docker Compose를 사용하여 설치하며, 이는 Dify가 웹 서버, API, 데이터베이스 등 여러 구성 요소로 이루어진 복잡한 애플리케이션임을 시사합니다. Docker Compose는 이러한 다중 컨테이너 애플리케이션의 설정과 실행을 간소화합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>사전 준비</strong>: Git과 Docker (Docker Compose 포함)가 설치되어 있어야 합니다. Dify는 최소 CPU 2코어, RAM 4GB 이상의 시스템 사양을 권장합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Dify 소스 코드 복제</strong>: 터미널에서 다음 명령어를 실행하여 Dify의 GitHub 저장소에서 소스 코드를 복제합니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>git clone&nbsp;<a href=\"https://github.com/langgenius/dify.git\">https://github.com/langgenius/dify.git</a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Dify Docker 디렉터리로 이동</strong>: <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>cd dify/docker</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>환경 설정 파일 생성</strong>: 제공된 예제 파일을 복사하여 .env 파일을 생성합니다. 이 파일에는 Dify 실행에 필요한 환경 변수들이 정의되어 있습니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>cp .env.example .env</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>필요에 따라 .env 파일을 열어 포트 번호, 데이터베이스 정보 등을 수정할 수 있지만, 대부분의 경우 기본 설정으로 충분합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>웹서버 nginx 포트를 80 에서 8088로 변경하기 위해, diry/docker 디렉토리에 있는 .env를 수정할 사항은 다음과 같습니다:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>SERVICE_API_URL=http://localhost:8088</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>APP_WEB_URL=http://localhost:8088</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>EXPOSE_NGINX_PORT=8088</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>EXPOSE_NGINX_SSL_PORT=444</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Email에서 링크를 정확히 표기하려면, CONSOLE_WEB_URL 변경</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Email  설정항목은<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>MAIL_TYPE=smtp</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>SMTP_SERVER=</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>SMTP_PORT=</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>SMTP_USERNAME=</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>SMTP_PASSWORD=</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>SMTP_USE_TLS=true</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>SMTP_OPPORTUNISTIC_TLS=false</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Dify 실행 (Docker Compose 사용)</strong>: 다음 명령어를 사용하여 Docker Compose로 Dify 애플리케이션을 백그라운드에서 실행합니다. <!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>docker compose up -d </li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>이 명령은 docker-compose.yml 파일에 정의된 모든 서비스(컨테이너)를 빌드(필요시)하고 실행합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Dify 접속</strong>: 웹 브라우저를 열고 주소창에 <a href=\"http://localhost:8088\">http://localhost:8088</a> 또는 초기 설정 페이지인 <a href=\"http://localhost/install%EC%9D%84\">http://localhost:8088/install</a> 을 입력하여 Dify에 접속합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>초기 Dify 설정</strong>: 화면의 안내에 따라 관리자 계정 생성 등 초기 설정을 완료합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->','Dify 설치','','publish','open','closed','','dify-%ec%84%a4%ec%b9%98','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(22,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>지식</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Dify의 지식 기능은 RAG 파이프라인의 각 단계를 시각화하여 애플리케이션 개발자가 개인 또는 팀 지식을 쉽게 관리할 수 있는 사용자 친화적인 UI를 제공합니다. 또한 AI 애플리케이션과의 원활한 통합을 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>개발자는 회사 내부 문서, FAQ, 표준 작업 가이드를 업로드한 다음, 대규모 언어 모델(LLM)에서 쿼리할 수 있는 구조화된 데이터로 처리할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>AI 모델에 내장된 정적인 사전 학습 데이터 세트와 비교했을 때, 지식 기반의 콘텐츠는 실시간으로 업데이트될 수 있으므로 LLM은 항상 최신 정보에 액세스할 수 있고 오래되거나 누락된 데이터로 인해 발생하는 문제를 방지하는 데 도움이 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>LLM은 사용자 질의를 수신하면 먼저 키워드를 사용하여 지식 베이스 내에서 검색합니다. 지식 베이스는 이러한 키워드를 기반으로 관련성이 높은 순위의 콘텐츠 청크를 반환하며, 이를 통해 LLM은 더욱 정확한 답변을 생성하는 데 중요한 맥락을 확보하게 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이러한 접근 방식은 LLM이 사전 훈련된 지식에만 의존하지 않도록 보장합니다. 대신, 실시간 문서와 데이터베이스를 활용하여 답변의 정확성과 관련성을 모두 향상시킬 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>주요 장점</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>• 실시간 업데이트&nbsp;: 지식 기반은 언제든지 업데이트할 수 있으므로 모델에 항상 최신 정보가 유지됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•&nbsp;정확성&nbsp;: LLM은 관련 문서를 검색하여 실제 정보를 바탕으로 답변을 도출하고 환각을 최소화할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•&nbsp;유연성&nbsp;: 개발자는 특정 요구 사항에 맞게 지식 기반 콘텐츠를 사용자 정의하고 필요에 따라 지식 범위를 정의할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p>다음과 같은 텍스트 콘텐츠만 준비하면 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>긴 텍스트 콘텐츠(TXT, Markdown, DOCX, HTML, JSONL 또는 PDF 파일)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>구조화된 데이터(CSV, Excel 등)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>온라인 데이터 소스(웹 페이지, Notion 등)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>지식베이스&nbsp;에 파일을 업로드하기만 하면&nbsp;데이터 처리가 자동으로 처리됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>팀에 이미 독립적인 지식 기반이 있는 경우&nbsp;\"외부 지식 기반에 연결\"&nbsp;기능을 사용하여 Dify와의 연결을 설정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":260,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-2-1024x584.jpg\" alt=\"\" class=\"wp-image-260\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/readme#use-case\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>사용 사례</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>기존 지식 기반과 제품 문서를 기반으로 AI 고객 지원 도우미를 만들려면 해당 파일을 Dify의 지식 기반에 업로드한 다음 대화형 애플리케이션을 설정하기만 하면 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>전통적으로 원시 텍스트 학습에서 완전히 개발된 AI 고객 지원 챗봇으로 전환하는 데는 몇 주가 걸릴 수 있으며, 효과적으로 유지 관리하고 반복하는 것도 어렵습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify에서는 전체 프로세스가 단 3분 만에 완료되며, 그 후 즉시 사용자 피드백을 수집할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/readme#knowledge-base-and-documents\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 기반 및 문서</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify에서 지식 베이스는 여러 문서의 모음이며, 각 문서에는 여러 개의 콘텐츠 청크가 포함될 수 있습니다. 전체 지식 베이스를 애플리케이션에 통합하여 업로드된 파일이나 다른 소스에서 동기화된 데이터를 활용하여 검색 컨텍스트로 활용할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>팀에 Dify 플랫폼과 별개의 독립적인 외부 지식이 이미 있는 경우,&nbsp;외부 지식 베이스&nbsp;기능을 사용하여 연결할 수 있습니다. 이렇게 하면 모든 콘텐츠를 Dify에 다시 업로드할 필요가 없습니다. AI 앱은 팀의 기존 지식에서 실시간으로 정보에 직접 액세스하고 처리할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3,\"metadata\":{\"name\":\"헤딩\"},\"style\":{\"typography\":{\"fontSize\":\"48px\"}}} -->\n<h3 class=\"wp-block-heading\" style=\"font-size:48px\"><strong>지식 기반 만들기</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>지식 기반을 생성하기 위해 문서를 업로드하는 단계:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>지식 기반을 만들고 로컬 문서 파일이나 온라인 데이터를 가져옵니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/import-content-data\"></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>텍스트 데이터 가져오기</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>지식 기반을 만들고 로컬 문서 파일이나 온라인 데이터를 가져옵니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>청킹 모드를 선택하고 분할 결과를 미리 확인하세요. 이 단계에서는 긴 텍스트를 여러 개의 작은 청크로 나누는 콘텐츠 전처리 및 구조화가 진행됩니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/chunking-and-cleaning-text\"></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>청크 모드를 선택하세요</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>청킹 모드를 선택하고 분할 결과를 미리 확인하세요. 이 단계에서는 긴 텍스트를 여러 개의 작은 청크로 나누는 콘텐츠 전처리 및 구조화가 진행됩니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>색인 방법과 검색 설정을 구성합니다. 지식 기반은 사용자 질의를 수신하면 미리 설정된 검색 방법에 따라 기존 문서를 검색하고 관련성이 높은 콘텐츠 청크를 추출합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/setting-indexing-methods\"></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>인덱싱 방법과 검색 설정을 선택하세요</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>색인 방법과 검색 설정을 구성합니다. 지식 기반은 사용자 질의를 수신하면 미리 설정된 검색 방법에 따라 기존 문서를 검색하고 관련성이 높은 콘텐츠 청크를 추출합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list {\"ordered\":true,\"start\":4} -->\n<ol start=\"4\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>청크 임베딩이 완료될 때까지 기다리세요.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>완료되면 지식 기반을 애플리케이션에 연결하고 사용을 시작하세요. 그런 다음 지식&nbsp;<strong>기반을 애플리케이션에 통합하여 지식 기반 Q&amp;A를 지원하는 LLM을 구축할 수 있습니다. 지식 기반을 추가로 수정하고 관리하려면&nbsp;지식 기반 및 문서 유지 관리를</strong>&nbsp;참조하세요&nbsp;.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":258,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-1024x528.jpg\" alt=\"\" class=\"wp-image-258\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-base-creation/introduction#embedding\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>임베딩</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>임베딩은</strong>&nbsp;이산 변수(단어, 문장, 문서)를 연속 벡터 표현으로 변환하여 고차원 데이터를 저차원 공간에 매핑합니다. 이 기법은 차원을 줄이는 동시에 중요한 의미 정보를 보존하여 콘텐츠 검색 효율을 향상시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>임베딩 모델은</strong>&nbsp;특수화된 대규모 언어 모델로, 텍스트를 고밀도 수치 벡터로 변환하고 의미적 뉘앙스를 효과적으로 포착하여 데이터 처리 및 분석을 개선하는 데 탁월합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>1. 텍스트 데이터 가져오기</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Dify의 메인 네비게이션 바에서 \'지식\'을 클릭하세요. 이 페이지에서 기존 지식 베이스를 확인할 수 있습니다.&nbsp;<strong>\'</strong><strong>지식 만들기\'를</strong>&nbsp;클릭하면 설정 마법사가 시작됩니다. 이 지식 베이스는 다음 두 가지 온라인 데이터 가져오기를 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify 상단 탐색 모음에서&nbsp;<strong>\'</strong><strong>지식\'을</strong>&nbsp;클릭한 다음&nbsp;<strong>\'</strong><strong>지식 만들기\'를</strong>&nbsp;선택하세요 . 지식에 문서를 업로드하거나 온라인 데이터를 가져올 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/readme#upload-local-files\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>로컬 파일 업로드</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>업로드할 파일을 드래그 앤 드롭하거나 선택하세요. 일괄 업로드</strong>&nbsp;에 허용되는 파일 수는&nbsp;<a href=\"https://dify.ai/pricing\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>구독</strong><strong> </strong><strong>플랜</strong></a>&nbsp;에 따라 다릅니다&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>문서 업로드 제한 사항:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>단일 문서의 업로드 크기 제한은 15MB입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":259,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-1-1024x459.jpg\" alt=\"\" class=\"wp-image-259\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/readme#import-from-online-data-source\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>온라인 데이터 소스에서 가져오기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식을</strong>&nbsp;생성할 때&nbsp;온라인 소스에서 데이터를 가져올 수 있습니다. 이 지식은 다음 두 가지 유형의 온라인 데이터를 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion\"></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>1.1 Notion에서 데이터 가져오기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Notion에서 데이터를 가져오는 방법을 알아보세요</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website\"></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>1.2 웹사이트에서 동기화</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>웹사이트에서 데이터를 동기화하는 방법을 알아보세요</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반이 온라인 데이터를 사용하도록 설정된 경우, 나중에 로컬 문서를 추가하거나 로컬 파일 기반 모드로 전환할 수 없습니다. 이를 통해 단일 지식 기반에 여러 데이터 소스가 혼합되는 것을 방지하여 관리 복잡성을 방지할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/readme#adding-data-later\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>나중에 데이터 추가</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>아직 문서나 기타 콘텐츠를 준비하지 않았다면 먼저 빈 지식 베이스를 만드세요. 그러면 준비가 되면 언제든지 로컬 파일을 업로드하거나 온라인 데이터를 가져올 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>1.1 Notion에서 데이터 동기화</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>페이지 복사</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Dify 데이터 세트는 Notion에서 데이터를 가져오고 동기화를</strong>&nbsp;설정하여&nbsp;Notion의 데이터 업데이트가 자동으로 Dify에 동기화되도록 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion#authorization-verification\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>권한 확인</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>데이터 세트를 생성하고 데이터 소스를 선택할 때&nbsp;<strong>Notion </strong><strong>콘텐츠에서 동기화 - 지금 바인딩을</strong>&nbsp;클릭 하고 메시지에 따라 권한 검증을 완료합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>또는&nbsp;<strong>설정 — 데이터 소스 — 데이터 소스 추가</strong>&nbsp;로 이동하여 Notion 소스&nbsp;<strong>바인딩을</strong>&nbsp;클릭 하고 권한 확인을 완료할 수 있습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":277,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-8-1024x435.jpg\" alt=\"\" class=\"wp-image-277\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion#importing-notion-data\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Notion 데이터 가져오기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>권한 검증을 완료한 후 데이터 세트 생성 페이지로 이동하여&nbsp;<strong>Notion </strong><strong>콘텐츠에서 동기화를</strong>&nbsp;클릭 하고 가져와야 하는 권한 있는 페이지를 선택합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":273,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-4-1024x524.jpg\" alt=\"\" class=\"wp-image-273\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion#chunking-and-cleaning\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>청킹 및 청소</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다음으로, 지식 베이스의&nbsp;<a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion.md#chunking-and-cleaning\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>청킹</strong><strong> </strong><strong>모드</strong></a>&nbsp;와&nbsp;<a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods.md\"><strong>인덱싱</strong><strong> </strong><strong>방법을</strong></a>&nbsp;선택하고 저장한 후 자동 처리될 때까지 기다리세요. Dify는 표준 Notion 페이지 가져오기를 지원할 뿐만 아니라 데이터베이스 유형 페이지의 페이지 속성을 통합하고 저장할 수도 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><em>참고: 이미지와 파일은 가져올 수 없으며, 표의 데이터는 텍스트로 변환됩니다.</em></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":272,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-3-1024x481.jpg\" alt=\"\" class=\"wp-image-272\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion#synchronizing-notion-data\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Notion 데이터 동기화</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Notion 콘텐츠가 업데이트된 경우,&nbsp;지식 베이스 문서 목록에서 해당 페이지의 \'&nbsp;<strong>동기화\' 버튼을 클릭하여 변경 사항을 동기화할 수 있습니다. 동기화에는 임베딩 프로세스가 포함되며, 이 과정에서 임베딩 모델의 토큰이 사용됩니다.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":274,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-5-1024x521.jpg\" alt=\"\" class=\"wp-image-274\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion#integration-configuration-method-for-community-edition-notion\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>커뮤니티 에디션 Notion 통합 구성 방법</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Notion은 내부 통합</strong>&nbsp;과&nbsp;<strong>공개 통합</strong>&nbsp;, 두 가지 통합 옵션을 제공합니다&nbsp;. 두 방법의 차이점에 대한 자세한 내용은&nbsp;<a href=\"https://developers.notion.com/docs/authorization\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Notion </strong><strong>공식</strong><strong> </strong><strong>문서</strong></a>&nbsp;를 참조하세요 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion#1-using-internal-integration\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>1. 내부 통합 사용</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>먼저, 통합 설정 페이지 \'&nbsp;<a href=\"https://www.notion.so/my-integrations\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>통합</strong><strong> </strong><strong>만들기\'</strong></a>&nbsp;에서 통합을 생성합니다 . 기본적으로 모든 통합은 내부 통합으로 시작하며, 내부 통합은 선택한 작업 공간과 연결되므로 통합을 생성하려면 작업 공간 소유자여야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>구체적인 단계:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>새 통합</strong>&nbsp;버튼을 클릭하세요&nbsp;. 유형은 기본적으로&nbsp;<strong>내부</strong>&nbsp;(Internal)이며 수정할 수 없습니다. 연결된 스페이스를 선택하고 통합 이름을 입력한 후 로고를 업로드하고&nbsp;<strong>제출(Submit)을</strong>&nbsp;클릭하면 통합이 성공적으로 생성됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":276,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-7-1024x850.jpg\" alt=\"\" class=\"wp-image-276\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>통합을 만든 후에는 기능 탭에서 필요에 따라 설정을 업데이트하고 비밀 아래에 있는&nbsp;<strong>표시</strong>&nbsp;버튼을 클릭하여 비밀을 복사할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":275,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-6-1024x367.jpg\" alt=\"\" class=\"wp-image-275\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>복사 후 Dify 소스 코드로 돌아가&nbsp;<strong>.env</strong>&nbsp;파일에서 관련 환경 변수를 설정하세요. 환경 변수는 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>NOTION_INTEGRATION_TYPE = internal or NOTION_INTEGRATION_TYPE = public</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>NOTION_INTERNAL_SECRET=you-internal-secret</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion#using-public-integration\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>공공 통합 사용</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>내부 통합을 공개 통합으로 업그레이드해야 합니다.</strong>&nbsp;통합의 배포 페이지로 이동하여 통합을 공개로 전환하세요. 공개 설정으로 전환할 때는 아래 조직 정보 양식에 회사명, 웹사이트, 리디렉션 URL 등 추가 정보를 입력한 후 \'&nbsp;<strong>제출\'</strong>&nbsp;버튼을 클릭하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":278,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-9-1024x838.jpg\" alt=\"\" class=\"wp-image-278\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>통합 설정 페이지에서 통합을 성공적으로 공개하면 키 탭에서 통합 키에 액세스할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":279,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-10-1024x777.jpg\" alt=\"\" class=\"wp-image-279\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>Dify 소스 코드로 돌아가서&nbsp;<strong>.env</strong>&nbsp;파일에서 관련 환경 변수를 설정하세요. 환경 변수는 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>NOTION_INTEGRATION_TYPE=public</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>NOTION_CLIENT_SECRET=your-client-secret</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>NOTION_CLIENT_ID=your-client-id</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>구성 후 데이터 세트에서 Notion 데이터 가져오기 및 동기화 기능을 작동할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>1.2 웹사이트에서 데이터 가져오기</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://jina.ai/reader/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>지식</strong><strong> </strong><strong>기반은 Jina Reader</strong></a>&nbsp;및&nbsp;<a href=\"https://www.firecrawl.dev/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Firecrawl</strong></a>&nbsp;과 같은 타사 도구를 사용하여 공개 웹 페이지에서 콘텐츠를 크롤링하고&nbsp;, 이를 Markdown 콘텐츠로 구문 분석하고, 이를 지식 기반으로 가져오는 것을 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://www.firecrawl.dev/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Firecrawl</strong></a>&nbsp;과&nbsp;<a href=\"https://jina.ai/reader/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Jina Reader</strong><strong>는</strong></a>&nbsp;모두 웹 페이지를 LLM이 인식하기 쉬운 깔끔한 Markdown 형식 텍스트로 변환할 수 있는 오픈 소스 웹 파싱 도구로, 사용하기 쉬운 API 서비스를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다음 섹션에서는 Firecrawl과 Jina Reader의 사용 방법을 각각 소개합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website#firecrawl\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>파이어크롤</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website#1-configure-firecrawl-api-credentials\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>1. Firecrawl API 자격 증명 구성</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>오른쪽 상단 모서리에 있는 아바타를 클릭한 다음,&nbsp;<strong>DataSource</strong>&nbsp;페이지로 이동하여 Firecrawl 옆에 있는&nbsp;<strong>구성</strong>&nbsp;버튼을 클릭합니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":280,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-11-1024x430.jpg\" alt=\"\" class=\"wp-image-280\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://www.firecrawl.dev/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Firecrawl </strong><strong>웹사이트</strong></a>&nbsp;에 로그인하여&nbsp;등록을 완료하고 API 키를 받은 다음 Dify에 입력하여 저장합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":281,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-12-1024x435.jpg\" alt=\"\" class=\"wp-image-281\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website#2-scrape-target-webpage\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>2. 대상 웹페이지 스크래핑</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반 생성 페이지에서&nbsp;<strong>웹사이트에서 동기화를</strong>&nbsp;선택하고 공급자로 Firecrawl을 선택한 다음 크롤링할 대상 URL을 입력합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>구성 옵션에는 하위 페이지 크롤링 여부, 페이지 크롤링 제한, 페이지 스크래핑 최대 깊이, 제외된 경로, 경로만 포함, 콘텐츠 추출 범위 등이 있습니다. 구성을 완료한 후 \'&nbsp;<strong>실행\'을</strong>&nbsp;클릭하면 파싱된 페이지를 미리 볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":283,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-14-1024x560.jpg\" alt=\"\" class=\"wp-image-283\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website#3-review-import-results\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>3. 가져오기 결과 검토</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>웹페이지에서 구문 분석된 텍스트를 가져온 후 지식 기반 문서에 저장됩니다. 가져오기 결과를 확인하고&nbsp;<strong>\'URL </strong><strong>추가\'를</strong>&nbsp;클릭하여 새 웹페이지 가져오기를 계속하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website#jina-reader\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지나 리더</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website#1-configuring-jina-reader-credentials\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>1. Jina Reader 자격 증명 구성</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>오른쪽 상단 모서리에 있는 아바타를 클릭한 다음,&nbsp;<strong>DataSource</strong>&nbsp;페이지로 이동하여 Jina Reader 옆에 있는&nbsp;<strong>구성</strong>&nbsp;버튼을 클릭합니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":282,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-13-1024x437.jpg\" alt=\"\" class=\"wp-image-282\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://jina.ai/reader/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Jina Reader </strong><strong>웹사이트</strong></a>&nbsp;에 로그인하여&nbsp;등록을 완료하고 API 키를 받은 다음, 키를 입력하고 저장합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website#2-using-jina-reader-to-crawl-web-content\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>2. Jina Reader를 사용하여 웹 콘텐츠 크롤링</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반 생성 페이지에서&nbsp;<strong>웹사이트에서 동기화를</strong>&nbsp;선택하고 , 공급자로 Jina Reader를 선택한 다음, 크롤링할 대상 URL을 입력합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":284,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-15-1024x885.jpg\" alt=\"\" class=\"wp-image-284\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>구성 옵션에는 하위 페이지 크롤링 여부, 크롤링할 최대 페이지 수, 크롤링에 사이트맵 사용 여부가 포함됩니다. 구성을 완료한 후&nbsp;<strong>\'</strong><strong>실행\'</strong>&nbsp;버튼을 클릭하면 크롤링할 페이지 링크를 미리 볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":285,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-16-1024x543.jpg\" alt=\"\" class=\"wp-image-285\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>웹 페이지에서 파싱된 텍스트를 지식 베이스로 가져온 후, 문서 섹션에서 가져온 결과를 검토할 수 있습니다. 웹 페이지를 더 추가하려면&nbsp;오른쪽의&nbsp;<strong>\'URL </strong><strong>추가\' 버튼을 클릭하여 새 페이지 가져오기를 계속하세요.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":286,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-17-1024x405.jpg\" alt=\"\" class=\"wp-image-286\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>크롤링이 완료되면 웹 페이지의 콘텐츠가 지식 기반에 통합됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>2. 청크 모드 선택</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에 콘텐츠를 업로드한 후 다음 단계는 청킹(chunking) 및 데이터 정리입니다.&nbsp;<strong>이 단계에는 긴 텍스트를 여러 개의 작은 청크로 나누는 콘텐츠 전처리 및 구조화가 포함됩니다.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>청킹 및 클리닝 전략이란 무엇인가요?</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>LLM이 지식 기반 질의에 정확하게 답변할 수 있는지는 시스템이 관련 콘텐츠 청크를 얼마나 효과적으로 검색하는지에 달려 있습니다. AI 애플리케이션이 정확하고 포괄적인 답변을 생성하는 데 있어 관련성이 높은 청크는 매우 중요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>예를 들어 AI 고객 챗봇 시나리오에서 LLM에게 도구 매뉴얼의 핵심 내용으로 안내하는 것만으로도 사용자 질문에 신속하게 답변할 수 있으며, 전체 문서를 반복적으로 분석할 필요가 없습니다. 이러한 접근 방식은 분석 단계에서 토큰을 절약하는 동시에 AI가 생성한 답변의 전반적인 품질을 향상시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text#chunk-mode\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>청크 모드</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반은&nbsp;<strong>일반 모드</strong>&nbsp;와&nbsp;<strong>부모-자식 모드</strong>&nbsp;, 두 가지 청킹 모드를 지원합니다 . 지식 기반을 처음 생성하는 경우 부모-자식 모드를 선택하는 것이 좋습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>참고</strong>&nbsp;: 기존의&nbsp;<strong>\"</strong><strong>자동 청킹 및 정리\" 모드가&nbsp;\"일반\"</strong>&nbsp;모드 로 자동 업데이트되었습니다&nbsp;. 별도의 변경은 필요하지 않으며, 기본 설정을 계속 사용하실 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>청크 모드를 선택하고 지식 기반을 생성한 후에는 나중에 변경할 수 없습니다. 지식 기반에 새로 추가되는 모든 문서는 동일한 청킹 전략을 따릅니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":287,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-18-1024x517.jpg\" alt=\"\" class=\"wp-image-287\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text#general-mode\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>일반 모드</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>콘텐츠는 독립적인 청크로 나뉩니다. 사용자가 질의를 제출하면 시스템은 청크와 질의 키워드 간의 관련성을 자동으로 계산합니다. 이후 상위 순위의 청크를 검색하여 LLM으로 전송하여 답변을 처리합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 모드에서는 다양한 문서 형식이나 특정 시나리오 요구 사항에 따라 텍스트 청킹 규칙을 수동으로 정의해야 합니다. 자세한 내용은 다음 구성 옵션을 참조하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>청크 식별자</strong>&nbsp;, 기본값은 이며&nbsp;\\n, 이는 텍스트가 문단 단위로 분할됨을 의미합니다.&nbsp;<a href=\"https://regexr.com/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>정규식을</strong></a>&nbsp;사용하여 청크 분할 규칙을 사용자 지정할 수 있습니다 . 시스템은 지정된 구분 기호를 감지할 때마다 자동으로 청크 분할을 실행합니다. </li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":289,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-20-1024x358.jpg\" alt=\"\" class=\"wp-image-289\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>최대 청크 길이:</strong>&nbsp;청크당 허용되는 최대 텍스트 문자 수를 지정합니다. 이 제한을 초과하면 시스템이 자동으로 청크를 적용합니다. 기본값은 500개 토큰이며, 최대 청크 길이는 4000개 토큰입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>청크 길이 겹침</strong>&nbsp;: 데이터가 청크로 분할될 때 청크 간에 일정량의 겹침이 발생합니다. 이러한 겹침은 정보 보존 및 분석 정확도를 높이고 검색 효과를 높이는 데 도움이 될 수 있습니다. 청크 길이 토큰의 10~25%로 설정하는 것이 좋습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>텍스트 전처리 규칙</strong>&nbsp;. 텍스트 전처리 규칙은 지식 기반에서 관련 없는 콘텐츠를 필터링하는 데 도움이 됩니다. 다음 옵션을 사용할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>연속된 공백, 줄바꿈 문자, 탭을 바꿉니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>모든 URL과 이메일 주소를 제거하세요</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>구성이 완료되면&nbsp;<strong>\"</strong><strong>청크 미리보기\"</strong>&nbsp;를 클릭하여 청크 분할 결과를 확인하세요. 각 청크의 문자 수를 확인할 수 있습니다. 청크 분할 규칙을 수정한 경우, 버튼을 다시 클릭하면 최근에 생성된 텍스트 청크를 확인할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>여러 문서를 대량으로 업로드하는 경우, 상단에 있는 문서 제목을 클릭하여 다른 문서에 대한 청크 결과를 검토하여 문서를 전환할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":288,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-19-1024x518.jpg\" alt=\"\" class=\"wp-image-288\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>청킹 규칙을 설정한 후 다음 단계는 인덱싱 방법을 지정하는 것입니다. 일반 모드는&nbsp;<strong>고품질 인덱싱&nbsp;방법</strong>&nbsp;과&nbsp;<strong>경제적인 인덱싱 방법을</strong>&nbsp;지원합니다 . <strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text#parent-child-mode\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>부모-자식 모드</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>일반 모드</strong>&nbsp;와 비교했을 때&nbsp;,&nbsp;<strong>부모-자식 모드는</strong>&nbsp;정확한 검색과 포괄적인 컨텍스트의 균형을 이루는 2계층 데이터 구조를 사용하여 정확한 매칭과 더 풍부한 컨텍스트 정보를 결합합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 모드에서 부모 청크(예: 문단)는 맥락을 제공하는 더 큰 텍스트 단위로 기능하는 반면, 자식 청크(예: 문장)는 정확한 검색에 중점을 둡니다. 시스템은 먼저 자식 청크를 검색하여 관련성을 확인한 다음, 해당 부모 청크를 가져와 전체 맥락을 제공합니다. 이를 통해 최종 응답의 정확성과 완전한 배경 정보를 보장합니다. 구분 기호와 최대 청크 길이를 설정하여 부모 청크와 자식 청크를 분할하는 방식을 사용자 지정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>예를 들어, AI 기반 고객 챗봇 사례에서 사용자 질의를 지원 문서의 특정 문장에 매핑할 수 있습니다. 그러면 해당 문장이 포함된 단락이나 장이 LLM에 제공되어 전체적인 맥락을 반영하여 답변이 더욱 정확해집니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>기본적인 메커니즘은 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>자식 청크를 사용한 쿼리 매칭:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>종종 한 문단 내의 한 문장처럼 간결한, 짧고 집중적인 정보가 사용자의 질의와 일치하는 데 사용됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>이러한 자식 청크를 통해 정확하고 관련성 있는 초기 검색이 가능합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>부모 청크를 통한 문맥적 풍부화:</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>그런 다음 일치하는 자식 청크를 포함하는 단락, 섹션 또는 전체 문서와 같은 더 크고 포괄적인 섹션을 검색합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>이러한 상위 청크는 언어 모델(LLM)에 대한 포괄적인 컨텍스트를 제공합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":290,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-21-1024x783.jpg\" alt=\"\" class=\"wp-image-290\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>이 모드에서는 다양한 문서 형식이나 특정 시나리오 요구 사항에 따라 부모 청크와 자식 청크 모두에 대해 별도의 청킹 규칙을 수동으로 구성해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>부모 청크</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>부모 청크 설정은 다음과 같은 옵션을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>문단 : 이 모드는 구분 기호와 최대 청크 길이를 기준으로 텍스트를 여러 문단으로 분할하고, 분할된 텍스트를 검색을 위한 상위 청크로 사용합니다. 각 문단은 상위 청크로 처리되므로, 텍스트 양이 많고 내용이 명확하며 문단이 비교적 독립적인 문서에 적합합니다. 다음 설정이 지원됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>청크 구분 기호</strong>&nbsp;: 기본값은 이며 , 텍스트를 문단 단위로 분할합니다.&nbsp;<a href=\"https://regexr.com/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>정규식을</strong></a> 기본값 \\n&nbsp;사용하여 청크 분할 규칙을 사용자 지정할 수 있습니다&nbsp;. 지정된 구분 기호가 나타날 때마다 시스템이 자동으로 텍스트를 청크합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>최대 청크 길이:</strong>&nbsp;청크당 허용되는 최대 텍스트 문자 수를 지정합니다. 이 제한을 초과하면 시스템이 자동으로 청크를 적용합니다. 기본값은 500개 토큰이며, 최대 청크 길이는 4000개 토큰입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>전체 문서</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>텍스트를 단락으로 나누는 대신, 전체 문서를 부모 청크로 사용하여 직접 검색합니다. 성능상의 이유로 텍스트의 처음 10,000개 토큰만 보존됩니다. 이 설정은 단락이 서로 연관되어 전체 문서 검색이 필요한 소규모 문서에 적합합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":291,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-22-1024x609.jpg\" alt=\"\" class=\"wp-image-291\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>자식 청크</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>자식 청크는 구분 기호 규칙에 따라 부모 청크를 분할하여 생성됩니다. 자식 청크는 쿼리 키워드와 가장 관련성이 높고 직접적인 정보를 식별하고 매칭하는 데 사용됩니다. 기본 자식 청킹 규칙을 사용할 경우, 일반적으로 다음과 같은 분할 결과가 발생합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>부모 청크가 문단인 경우, 자식 청크는 각 문단 내의 개별 문장에 해당합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>부모 청크가 전체 문서인 경우, 자식 청크는 문서 내의 개별 문장에 해당합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>다음 청크 설정을 구성할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>청크 구분 기호</strong>&nbsp;: 기본값은 이며, 텍스트를 문장 단위로 청크합니다.&nbsp;<a href=\"https://regexr.com/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>정규식을</strong></a>&nbsp;사용하여 청크 규칙을 사용자 지정할 수 있습니다 . 지정된 구분 기호가 나타날 때마다 시스템이 자동으로 텍스트를 청크합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>최대 청크 길이:</strong>&nbsp;청크당 허용되는 최대 텍스트 문자 수를 지정합니다. 이 제한을 초과하면 시스템이 자동으로 청크를 적용합니다. 기본값은 200개 토큰이며, 최대 청크 길이는 4000개 토큰입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>텍스트 전처리 규칙을</strong>&nbsp;사용하여 지식 기반에서 관련 없는 콘텐츠를 필터링할&nbsp;수도 있습니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>연속된 공백, 줄바꿈 문자, 탭을 바꿉니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>모든 URL과 이메일 주소를 제거하세요</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>구성을 완료한 후&nbsp;<strong>\"</strong><strong>청크 미리보기\"</strong>&nbsp;를 클릭하여 결과를 확인하세요. 상위 청크의 총 문자 수를 확인할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>구성이 완료되면&nbsp;<strong>\"</strong><strong>청크 미리보기\"</strong>&nbsp;를 클릭하여 청크 분할 결과를 확인하세요. 상위 청크의 총 문자 수를 확인할 수 있습니다. 파란색으로 강조 표시된 문자는 하위 청크를 나타내며, 현재 하위 청크의 문자 수도 참조용으로 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>청킹 규칙을 수정한 경우 버튼을 다시 클릭하면 최근에 생성된 텍스트 청크를 볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>여러 문서를 대량으로 업로드하는 경우, 상단에 있는 문서 제목을 클릭하여 다른 문서에 대한 청크 결과를 검토하여 문서를 전환할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":292,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-23-1024x600.jpg\" alt=\"\" class=\"wp-image-292\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>정확한 콘텐츠 검색을 보장하기 위해 부모-자식 청크 모드는&nbsp;<a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods#high-quality\"><strong>고품질</strong><strong> </strong><strong>인덱싱</strong></a>&nbsp;만 지원합니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text#what%E2%80%99s-the-difference-between-two-modes%EF%BC%9F\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>두 모드의 차이점은 무엇인가요?</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>두 모드의 차이점은 콘텐츠 청크의 구조에 있습니다.&nbsp;<strong>일반 모드는</strong>&nbsp;여러 개의 독립적인 콘텐츠 청크를 생성하는 반면,&nbsp;<strong>부모-자식 모드는</strong>&nbsp;두 계층의 청킹 방식을 사용합니다. 즉, 하나의 부모 청크(예: 전체 문서 또는 단락)가 여러 개의 자식 청크(예: 문장)를 포함합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다양한 청킹(chunking) 방식이 LLM이 지식 기반을 얼마나 효과적으로 검색할 수 있는지에 영향을 미칩니다. 동일한 문서에 부모-자식 검색(Parent-child Retrieval)을 적용하면 높은 정확도를 유지하면서도 더욱 포괄적인 맥락을 제공하므로 기존의 단일 계층 방식보다 훨씬 효과적입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":293,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-1024x506.png\" alt=\"\" class=\"wp-image-293\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text#reference\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>3. 인덱싱 방법 및 검색 설정 선택</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>청킹 모드를 선택한 후 다음 단계는 구조화된 콘텐츠에 대한 인덱싱 방법을 정의하는 것입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods#setting-the-indexing-method\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>인덱싱 방법 설정</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>검색 엔진이 효율적인 인덱싱 알고리즘을 사용하여 사용자 질의와 가장 관련성이 높은 검색 결과를 찾는 것과 마찬가지로, 선택된 인덱싱 방법은 LLM의 검색 효율성과 지식 기반 콘텐츠에 대한 응답의 정확성에 직접적인 영향을 미칩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반은&nbsp;<strong>고품질</strong>&nbsp;및&nbsp;<strong>경제적</strong>&nbsp;이라는 두 가지 인덱싱 방법을 제공하며 , 각 방법은 서로 다른 검색 설정 옵션을 갖습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>참고</strong>&nbsp;: 원래&nbsp;<strong>Q&amp;A </strong><strong>모드(커뮤니티 에디션에서만 사용 가능)는</strong>&nbsp;이제 고품질 색인 방법에 따른 선택적 기능입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>고품질</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>경제적</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>고품질 모드에서 임베딩 모델은 텍스트 청크를 수치 벡터로 변환하여 대량의 텍스트 정보를 효율적으로 압축하고 저장할 수 있도록 합니다.&nbsp;<strong>이를 통해 사용자 쿼리와 텍스트 간의 더욱 정확한 매칭이 가능합니다.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>텍스트 청크가 벡터화되어 데이터베이스에 저장되면, 사용자 질의와 일치하는 청크를 가져오는 효과적인 검색 방법이 필요합니다. 고품질 인덱싱 방법은 벡터 검색, 전체 텍스트 검색, 그리고 하이브리드 검색의 세 가지 검색 설정을 제공합니다. 검색 설정에 대한 자세한 내용은&nbsp;<a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods#retrieval-settings\"><strong>\"</strong><strong>검색</strong><strong> </strong><strong>설정\"</strong><strong>을</strong></a>&nbsp;참조하십시오 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>고품질</strong>&nbsp;모드를 선택한 후에&nbsp;는 지식 베이스 색인 방식을 나중에&nbsp;<strong>경제</strong>&nbsp;모드로 다운그레이드할 수 없습니다. 전환해야 하는 경우, 새 지식 베이스를 생성하고 원하는 색인 ​​방식을 선택하는 것이 좋습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":294,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-24-1024x481.jpg\" alt=\"\" class=\"wp-image-294\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods#enable-q%26a-mode-optional%2C-community-edition-only\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Q&amp;A 모드 활성화(선택 사항, 커뮤니티 에디션만 해당)</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 모드를 활성화하면 시스템은 업로드된 텍스트를 분할하고 각 세그먼트의 내용을 요약한 후 자동으로 Q&amp;A 쌍을 생성합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>일반적인&nbsp;<strong>Q to P</strong>&nbsp;전략(사용자 질문을 텍스트 문단과 매칭)과 비교했을 때, Q&amp;A 모드는&nbsp;<strong>Q to Q</strong>&nbsp;전략(질문을 질문과 매칭)을 사용합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이러한 접근 방식은 FAQ 문서의 텍스트가&nbsp;<strong>완전한 문법 구조를 갖춘 자연어로 작성되는 경우가 많기</strong>&nbsp;때문에 특히 효과적입니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Q&nbsp;<strong>to Q</strong>&nbsp;전략은 질문과 답변의 매칭을 더욱 명확하게 만들어 주고, 질문이 빈번하거나 매우 유사한 시나리오를 더 잘 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":295,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-25-982x1024.jpg\" alt=\"\" class=\"wp-image-295\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>사용자가 질문을 하면 시스템은 가장 유사한 질문을 식별하고 해당 질문을 답변으로 반환합니다. 이 방식은 사용자의 질의와 직접 일치하여 사용자가 필요한 정확한 정보를 찾을 수 있도록 하므로 더욱 정확합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":296,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-26-1024x551.jpg\" alt=\"\" class=\"wp-image-296\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods#setting-the-retrieval-setting\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>검색 설정 설정</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반은 사용자 질의를 수신하면, 미리 설정된 검색 방법에 따라 기존 문서를 검색하고 관련성이 높은 콘텐츠 청크를 추출합니다. 이러한 콘텐츠 청크는 LLM에 필수적인 맥락 정보를 제공하여 궁극적으로 답변의 정확성과 신뢰성에 영향을 미칩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>일반적인 검색 방법은 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>벡터 유사성에 기반한 의미 검색 - 텍스트 덩어리와 쿼리를 벡터로 변환하고 유사성 점수를 통해 매칭합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>역색인(표준 검색 엔진 기법)을 이용한 키워드 매칭. 두 방법 모두 Dify 지식 베이스에서 지원됩니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>Dify 지식 기반에서는 두 가지 검색 방법 모두 지원됩니다. 사용 가능한 구체적인 검색 옵션은 선택한 인덱싱 방법에 따라 달라집니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>고품질</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>경제적</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>고품질</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>고품질</strong>&nbsp;인덱싱 방법 에서 Dify는&nbsp;<strong>벡터 검색, 전체 텍스트 검색, 하이브리드 검색의</strong>&nbsp;세 가지 검색 설정을 제공합니다&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":297,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-27-1024x755.jpg\" alt=\"\" class=\"wp-image-297\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>벡터 검색</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>정의</strong>&nbsp;: 사용자의 질문을 벡터화하여 쿼리 벡터를 생성한 다음, 지식 기반의 해당 텍스트 벡터와 비교하여 가장 가까운 청크를 찾습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":298,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-28-1024x358.jpg\" alt=\"\" class=\"wp-image-298\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>벡터 검색 설정：</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Rerank 모델</strong>&nbsp;: 기본적으로 비활성화되어 있습니다. 활성화하면 타사 Rerank 모델이 벡터 검색에서 반환된 텍스트 청크를 정렬하여 결과를 최적화합니다. 이를 통해 LLM이 더욱 정확한 정보에 접근하고 출력 품질을 개선하는 데 도움이 됩니다. 이 옵션을 활성화하기 전에&nbsp;<strong>설정</strong>&nbsp;→&nbsp;<strong>모델 공급자</strong>&nbsp;로 이동하여 Rerank 모델의 API 키를 설정하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 기능을 활성화하면 Rerank 모델의 토큰이 소모됩니다. 자세한 내용은 관련 모델의 가격 페이지를 참조하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TopK</strong>&nbsp;: 사용자 질의와 가장 유사하다고 판단되는 텍스트 청크를 얼마나 많이 검색할지 결정합니다. 또한 선택한 모델의 컨텍스트 창에 따라 청크 수를 자동으로 조정합니다. 기본값은&nbsp;<strong>3</strong>&nbsp;이며 , 숫자가 높을수록 더 많은 텍스트 청크를 검색합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>점수 임계값</strong>&nbsp;: 청크를 검색하는 데 필요한 최소 유사도 점수를 설정합니다. 이 점수를 초과하는 청크만 검색됩니다. 기본값은&nbsp;<strong>0.5</strong>&nbsp;입니다 . 임계값이 높을수록 더 높은 유사도가 요구되므로 검색되는 청크 수가 줄어듭니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>TopK 및 Score 구성은 Rerank 단계에서만 유효합니다. 따라서 이러한 설정을 적용하려면 Rerank 모델을 추가하고 활성화해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong>전체 텍스트 검색</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>정의:</strong>&nbsp;문서에 있는 모든 용어를 인덱싱하여 사용자가 용어를 쿼리하고 해당 용어가 포함된 텍스트 조각을 반환할 수 있도록 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":299,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-29-1024x355.jpg\" alt=\"\" class=\"wp-image-299\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>Rerank 모델</strong>&nbsp;: 기본적으로 비활성화되어 있습니다. 활성화하면 타사 Rerank 모델이 전체 텍스트 검색에서 반환된 텍스트 청크를 정렬하여 결과를 최적화합니다. 이를 통해 LLM이 더욱 정확한 정보에 접근하고 출력 품질을 향상시킬 수 있습니다. 이 옵션을 활성화하기 전에&nbsp;<strong>설정</strong>&nbsp;→&nbsp;<strong>모델 공급자</strong>&nbsp;로 이동하여 Rerank 모델의 API 키를 설정하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 기능을 활성화하면 Rerank 모델의 토큰이 소모됩니다. 자세한 내용은 관련 모델의 가격 페이지를 참조하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TopK</strong>&nbsp;: 사용자 질의와 가장 유사하다고 판단되는 텍스트 청크를 얼마나 많이 검색할지 결정합니다. 또한 선택한 모델의 컨텍스트 창에 따라 청크 수를 자동으로 조정합니다. 기본값은&nbsp;<strong>3</strong>&nbsp;이며 , 숫자가 높을수록 더 많은 텍스트 청크를 검색합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>점수 임계값</strong>&nbsp;: 청크를 검색하는 데 필요한 최소 유사도 점수를 설정합니다. 이 점수를 초과하는 청크만 검색됩니다. 기본값은&nbsp;<strong>0.5</strong>&nbsp;입니다 . 임계값이 높을수록 더 높은 유사도가 요구되므로 검색되는 청크 수가 줄어듭니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>TopK 및 Score 구성은 Rerank 단계에서만 유효합니다. 따라서 이러한 설정을 적용하려면 Rerank 모델을 추가하고 활성화해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong>하이브리드 검색</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>정의</strong>&nbsp;: 이 프로세스는 전체 텍스트 검색과 벡터 검색을 결합하여 두 가지를 동시에 수행합니다. 여기에는 사용자 질의를 기반으로 두 검색 결과에서 가장 일치하는 결과를 선택하는 재정렬 단계가 포함됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":300,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-30-1024x687.jpg\" alt=\"\" class=\"wp-image-300\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>이 모드에서는&nbsp;Rerank 모델 API를 구성하거나 검색을 위해&nbsp;<strong>Rerank </strong><strong>모델을 활성화하지 않고도&nbsp;\"가중치 설정\"을</strong>&nbsp;지정할 수 있습니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>무게 설정</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 기능을 사용하면 사용자가 의미적 우선순위와 키워드 우선순위에 대한 가중치를 직접 설정할 수 있습니다. 키워드 검색은 지식 기반 내에서 전체 텍스트 검색을 수행하는 것을 의미하고, 의미적 검색은 지식 기반 내에서 벡터 검색을 포함합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>1의 의미적 가치</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 기능은 의미 검색 모드만 활성화합니다. 임베딩 모델을 활용하면 질의어의 정확한 용어가 지식 베이스에 나타나지 않더라도 벡터 거리를 계산하여 더욱 심층적인 검색을 수행할 수 있으며, 이를 통해 관련 콘텐츠를 반환합니다. 또한, 다국어 콘텐츠를 처리할 때 의미 검색은 여러 언어의 의미를 포착하여 더욱 정확한 교차 언어 검색 결과를 제공할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>키워드 가치 1</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 기능은 키워드 검색 모드만 활성화합니다. 지식 베이스의 입력 텍스트와 전체 일치를 수행하므로 사용자가 정확한 정보나 용어를 알고 있는 경우에 적합합니다. 이 방식은 컴퓨팅 리소스를 덜 소모하며, 대규모 문서 지식 베이스 내에서 빠른 검색에 이상적입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>사용자 정의 키워드 및 의미적 가중치</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>시맨틱 검색 또는 키워드 검색만 활성화하는 것 외에도, 유연한 맞춤 가중치 설정을 제공합니다. 두 가지 검색 방법의 가중치를 지속적으로 조정하여 비즈니스 상황에 맞는 최적의 가중치 비율을 찾을 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong>재순위 모델</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>기본적으로 비활성화되어 있습니다. 활성화하면 타사 Rerank 모델이 하이브리드 검색에서 반환된 텍스트 청크를 정렬하여 결과를 최적화합니다. 이를 통해 LLM이 더욱 정확한 정보에 접근하고 출력 품질을 개선하는 데 도움이 됩니다. 이 옵션을 활성화하기 전에&nbsp;<strong>설정</strong>&nbsp;→&nbsp;<strong>모델 공급자</strong>&nbsp;로 이동하여 Rerank 모델의 API 키를 구성하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 기능을 활성화하면 Rerank 모델의 토큰이 소모됩니다. 자세한 내용은 관련 모델의 가격 페이지를 참조하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\"가중치 설정&nbsp;<strong>\"</strong>&nbsp;및&nbsp;<strong>\"</strong><strong>모델 재순위\"</strong>&nbsp;설정은 다음 옵션을 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>TopK</strong>&nbsp;: 사용자 질의와 가장 유사하다고 판단되는 텍스트 청크를 얼마나 많이 검색할지 결정합니다. 또한 선택한 모델의 컨텍스트 창에 따라 청크 수를 자동으로 조정합니다. 기본값은&nbsp;<strong>3</strong>&nbsp;이며 , 숫자가 높을수록 더 많은 텍스트 청크를 검색합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>점수 임계값</strong>&nbsp;: 청크를 검색하는 데 필요한 최소 유사도 점수를 설정합니다. 이 점수를 초과하는 청크만 검색됩니다. 기본값은&nbsp;<strong>0.5</strong>&nbsp;입니다 . 임계값이 높을수록 더 높은 유사도가 요구되므로 검색되는 청크 수가 줄어듭니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods#reference\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>지식 관리</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>지식 페이지는 팀 소유자, 팀 관리자 및 편집자 권한이 있는 사용자만 접근할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify 플랫폼 상단의 \'&nbsp;<strong>지식</strong>&nbsp;\' 버튼을 클릭 하고 관리할 지식을 선택하세요. 왼쪽 사이드바의 \'설정\'으로 이동하여 설정하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>여기에서 지식 기반의 이름, 설명, 권한, 인덱싱 방법, 내장 모델 및 검색 설정을 수정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":301,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-31-1024x762.jpg\" alt=\"\" class=\"wp-image-301\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>지식 이름</strong>&nbsp;: 다양한 지식 기반을 구별하는 데 사용됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>지식 설명</strong>&nbsp;: 지식 기반의 문서에 표현된 정보를 설명하는 데 사용됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>권한</strong>&nbsp;: 지식 기반에 대한 액세스 제어를 세 가지 수준으로 정의합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>\"나만\"</strong>&nbsp;: 지식 기반 소유자의 접근을 제한합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"모든 팀 구성원\"</strong>&nbsp;: 팀의 모든 구성원에게 액세스 권한을 부여합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>\"일부 팀 구성원\"</strong>&nbsp;: 특정 팀 구성원에게 선택적으로 접근할 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>적절한 권한이 없는 사용자는 지식 기반에 접근할 수 없습니다. 팀원에게 접근 권한을 부여할 때(옵션 2 또는 3), 권한이 있는 사용자에게는 지식 기반 콘텐츠 보기, 편집 및 삭제 권한을 포함한 모든 권한이 부여됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>인덱싱 모드</strong>&nbsp;: 자세한 설명은&nbsp;<a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods\"><strong>설명서</strong></a>&nbsp;를 참조하세요 .</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>임베딩 모델</strong>&nbsp;: 지식 기반의 임베딩 모델을 수정할 수 있습니다. 임베딩 모델을 변경하면 지식 기반의 모든 문서가 다시 임베딩되고, 원래 임베딩은 삭제됩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>검색 설정</strong>&nbsp;: 자세한 설명은&nbsp;<a href=\"https://docs.dify.ai/en/learn-more/extended-reading/retrieval-augment/retrieval\"><strong>설명서</strong></a>&nbsp;를 참조하세요 .</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/introduction#view-linked-applications-in-the-knowledge-base\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 기반에서 연결된 애플리케이션 보기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 베이스 왼쪽에는 연결된 모든 앱이 표시됩니다. 원형 아이콘 위에 마우스를 올리면 연결된 모든 앱 목록이 표시됩니다. 오른쪽의 바로가기 버튼을 클릭하면 빠르게 탐색할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":302,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-32-1024x348.jpg\" alt=\"\" class=\"wp-image-302\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>웹 인터페이스나 API를 통해 지식 기반 문서를 관리할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/introduction#maintain-knowledge-documents\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>지식 문서 유지 관리</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에서 모든 문서와 해당 청크를 직접 관리할 수 있습니다. </p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/introduction#maintain-knowledge-base-via-api\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>API를 통한 지식 기반 유지</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify 지식 베이스는 포괄적인 표준 API 세트를 제공합니다. 개발자는 이러한 API를 사용하여 문서 및 청크 추가, 삭제, 업데이트, 검색과 같은 일상적인 관리 및 유지 관리 작업을 수행할 수 있습니다. 자세한 내용은 다음 문서를 참조하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api\"></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api\">API를 통한 지식 기반 유지</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api\">API를 통해 지식 기반을 유지하는 방법을 알아보세요</a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":303,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-33-1024x625.jpg\" alt=\"\" class=\"wp-image-303\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>문서 유지 관리</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#manage-documentations-in-the-knowledge-base\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 기반에서 문서 관리</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#adding-documentations\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>문서 추가</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 베이스는 문서 모음입니다. 개발자나 운영자가 문서를 업로드하거나 다른 데이터 소스에서 동기화할 수 있습니다. 지식 베이스의 각 문서는 해당 데이터 소스의 파일(예: Notion 문서 또는 온라인 웹페이지)에 해당합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>기존 지식 기반에 새 문서를 업로드하려면&nbsp;<strong>지식 기반</strong>&nbsp;&gt;&nbsp;<strong>문서 로 이동하여&nbsp;파일 추가를</strong>&nbsp;클릭합니다&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":304,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-34-1024x330.jpg\" alt=\"\" class=\"wp-image-304\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#disable-%2F-archive-%2F-delete-document\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>문서 비활성화/보관/삭제</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>활성화</strong>&nbsp;: 현재 정상 상태인 문서는 지식 기반에서 편집 및 검색할 수 있습니다. 비활성화된 문서는 다시 활성화할 수 있습니다. 보관된 문서의 경우, 다시 활성화하기 전에 먼저 보관을 해제해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>비활성화</strong>&nbsp;: 사용 중 문서 색인 생성을 원하지 않으면 문서 오른쪽에 있는 파란색 스위치를 끄세요. 비활성화된 문서도 편집이나 수정은 가능합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>보관</strong>&nbsp;: 더 이상 사용하지 않지만 삭제하고 싶지 않은 오래된 문서는 보관할 수 있습니다. 보관된 문서는 열람 및 삭제만 가능하며 편집은 불가능합니다. 지식 베이스의&nbsp;<strong>문서 목록 에서&nbsp;\'보관\'</strong>&nbsp;버튼을 클릭하거나&nbsp;문서 세부 정보 페이지에서 문서를 보관할 수 있습니다. 보관은 취소할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>삭제</strong>&nbsp;: ⚠️ 위험한 옵션입니다. 잘못된 문서나 명확하게 모호한 내용의 경우, 문서 오른쪽 메뉴에서 \'삭제\'를 선택하세요. 삭제된 내용은 복구할 수 없으므로 주의해서 진행하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>위의 옵션은 모두 여러 문서를 선택한 후 일괄 작업을 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":305,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-35-1024x505.jpg\" alt=\"\" class=\"wp-image-305\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>메모:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에 업데이트나 검색이 잠시 동안 이루어지지 않은 문서가 있는 경우, 최적의 성능을 보장하기 위해 시스템에서는 비활성 문서를 비활성화합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>샌드박스 사용자의 경우 \"비활성 문서 비활성화 기간\"은&nbsp;<strong>7</strong><strong>일 후</strong>&nbsp;입니다 .</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Professional 및 Team 사용자의 경우&nbsp;<strong>30</strong><strong>일 후부터</strong>&nbsp;적용됩니다 . 지식 베이스에서 \"활성화\" 버튼을 클릭하면 언제든지 이 문서를 되돌리고 계속 사용할 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에서 \"활성화\" 버튼을 클릭하면 언제든지 비활성화된 문서를 되돌리고 계속 사용할 수 있습니다. 유료 사용자에게는&nbsp;<strong>원클릭 되돌리기</strong>&nbsp;기능이 제공됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":306,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-36-1024x569.jpg\" alt=\"\" class=\"wp-image-306\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#managing-text-chunks\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>텍스트 청크 관리</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#viewing-text-chunks\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>텍스트 청크 보기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 베이스에서는 업로드된 각 문서가 텍스트 청크로 저장됩니다. 문서 제목을 클릭하면 세부 정보 페이지에서 청크 목록과 해당 텍스트 콘텐츠를 볼 수 있습니다. 각 페이지는 기본적으로 10개의 청크를 표시하지만, 웹 하단에서 페이지당 표시되는 청크 수를 변경할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>미리보기에서는 각 콘텐츠 청크의 처음 두 줄만 표시됩니다. 청크 내 전체 텍스트를 보려면 \"청크 확장\" 버튼을 클릭하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":307,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-37-1024x515.jpg\" alt=\"\" class=\"wp-image-307\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>필터를 사용하면 활성화된 문서나 비활성화된 문서를 모두 빠르게 볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":308,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-38-1024x266.jpg\" alt=\"\" class=\"wp-image-308\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>다양한&nbsp;<a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text\"><strong>청킹</strong><strong> </strong><strong>모드는</strong></a>&nbsp;다양한 텍스트 청킹 미리 보기 방법에 해당합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>일반 모드</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>부모-자식 모드</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Q&amp;A 모드(커뮤니티 에디션 전용)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>일반 모드</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text#general-mode\"><strong>일반</strong><strong> </strong><strong>모드</strong></a>&nbsp;에서 텍스트 덩어리는&nbsp;독립적인 블록입니다. 덩어리의 전체 내용을 보려면&nbsp;<strong>전체 화면</strong>&nbsp;아이콘을 클릭하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":309,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-39-1024x658.jpg\" alt=\"\" class=\"wp-image-309\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>지식 기반의 다른 문서로 빠르게 전환하려면 상단의 문서 제목을 탭하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":310,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-40-1024x290.jpg\" alt=\"\" class=\"wp-image-310\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#checking-chunk-quality\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>청크 품질 확인</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>문서 청킹은 지식 기반 애플리케이션의 Q&amp;A 성능에 상당한 영향을 미칩니다. 지식 기반을 애플리케이션에 통합하기 전에 청킹 품질을 수동으로 검토하는 것이 좋습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>문자 길이, 식별자 또는 자연어 처리 의미 체계를 기반으로 하는 자동화된 청크 방식은 대규모 텍스트 청크의 작업 부하를 크게 줄일 수 있지만, 청크의 품질은 다양한 문서 형식의 텍스트 구조와 의미적 맥락에 따라 달라집니다. 수동 검사 및 수정은 의미 인식에서 기계 청크의 단점을 효과적으로 보완할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>청크 품질을 확인할 때 다음 상황에 주의하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>너무 짧은 텍스트 덩어리는</strong>&nbsp;의미 손실을 초래합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":311,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-41-1024x196.jpg\" alt=\"\" class=\"wp-image-311\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>너무 긴 텍스트 청크로</strong>&nbsp;인해 의미적 노이즈가 발생하여 일치 정확도에 영향을 미칩니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":312,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-42-1024x704.jpg\" alt=\"\" class=\"wp-image-312\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>최대 세그먼트 길이 제한을 사용할 때 발생하는 명백한 의미적 잘림으로</strong>&nbsp;인해 강제적인 의미적 잘림이 발생하고 회수 중에 콘텐츠가 누락됩니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":313,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-43-1024x179.jpg\" alt=\"\" class=\"wp-image-313\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#adding-text-chunks\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>텍스트 청크 추가</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에 텍스트 청크를 개별적으로 추가할 수 있으며, 청킹 모드에 따라 해당 청크를 추가하는 방법도 달라집니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>텍스트 청크 추가는 유료 기능입니다.&nbsp;이 기능을 이용하려면&nbsp;<a href=\"https://dify.ai/pricing\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>여기에서</strong><strong> </strong><strong>계정을</strong><strong> </strong><strong>업그레이드하세요.</strong></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>일반 모드</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>부모-자식 모드</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Q&amp;A 모드(커뮤니티 에디션 전용)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>일반 모드</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>청크 목록 페이지에서 청크 추가를</strong>&nbsp;클릭하면&nbsp;문서에 하나 이상의 사용자 정의 청크를 추가할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":314,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-44-1024x718.jpg\" alt=\"\" class=\"wp-image-314\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>텍스트 청크를 수동으로 추가할 때 주요 콘텐츠와 키워드를 모두 추가할 수 있습니다. 콘텐츠를 입력한 후&nbsp;하단의&nbsp;<strong>\"</strong><strong>다른 콘텐츠 추가\" 체크박스를 선택하면 더 많은 텍스트 청크를 원활하게 추가할 수 있습니다.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":315,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-45-1024x661.jpg\" alt=\"\" class=\"wp-image-315\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>대량으로 청크를 추가하려면 먼저 CSV 형식의 업로드 템플릿을 다운로드하고 템플릿 형식에 따라 Excel에서 모든 청크 내용을 편집한 다음, CSV 파일을 저장하고 업로드해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":316,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-46-1024x648.jpg\" alt=\"\" class=\"wp-image-316\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#editing-text-chunks\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>텍스트 청크 편집</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>일반 모드</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>부모-자식 모드</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Q&amp;A 모드(커뮤니티 에디션 전용)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>일반 모드</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>추가된 청크 콘텐츠를 직접 편집하거나 수정할 수 있으며,&nbsp;<strong>청크 내의 텍스트 콘텐츠나 키워드를 수정할 수도 있습니다.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>중복 편집을 방지하기 위해 콘텐츠 청크가 수정된 후에는 \"편집됨\" 태그가 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":317,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-47-1024x621.jpg\" alt=\"\" class=\"wp-image-317\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#modify-text-chunks-for-uploaded-documents\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>업로드된 문서의 텍스트 청크 수정</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반은 문서 세분화 재구성을 지원합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>더 큰 덩어리</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>각 청크 내에서 더 많은 맥락을 유지하므로 텍스트에 대한 더 폭넓은 이해가 필요한 작업에 이상적입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>청크의 총 개수를 줄여 처리 시간과 저장 오버헤드를 줄입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>더 작은 덩어리</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>더욱 세부적인 정보를 제공하여 추출이나 요약과 같은 작업의 정확도를 향상시킵니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>모델 토큰 한도를 초과할 위험을 줄여 제약 조건이 엄격한 모델의 안전성을 높입니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>청크 설정</strong>&nbsp;으로 이동하여&nbsp;설정을 조정한 후 \'&nbsp;<strong>저장 및 처리\'를</strong>&nbsp;클릭하여 변경 사항을 저장하고 문서를 다시 처리합니다. 처리가 완료되면 청크 목록이 자동으로 업데이트되므로 페이지를 새로 고칠 필요가 없습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":318,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-48-1024x450.jpg\" alt=\"\" class=\"wp-image-318\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:image {\"id\":319,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-49-532x1024.jpg\" alt=\"\" class=\"wp-image-319\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents#metadata\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>메타데이터</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#what-is-metadata%3F\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터란 무엇인가요?</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#overview\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>개요</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>메타데이터는 데이터를 설명하는 정보, 즉 \"데이터에 대한 데이터\"입니다. 책에 목차가 있어 구조를 이해하는 데 도움이 되는 것처럼, 메타데이터는 데이터의 내용, 출처, 목적 등에 대한 맥락을 제공하여 지식 기반에서 정보를 더 쉽게 찾고 관리할 수 있도록 도와줍니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 가이드는 메타데이터를 이해하고 지식 기반을 효과적으로 관리하는 데 도움을 주는 것을 목표로 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#core-concepts\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>핵심 개념</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>필드:</strong>&nbsp;메타데이터 필드의 레이블(예: \"작성자\", \"언어\")입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>값:</strong>&nbsp;메타데이터 필드에 저장된 정보(예: \"Jack\", \"English\")</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":321,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-51.jpg\" alt=\"\" class=\"wp-image-321\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>값 개수:</strong>&nbsp;중복을 포함하여 메타데이터 필드에 포함된 값의 개수입니다(예: \"3\").</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":322,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-52.jpg\" alt=\"\" class=\"wp-image-322\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>값 유형:</strong>&nbsp;필드에 포함될 수 있는 값의 유형입니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Dify는 세 가지 값 유형을 지원합니다.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>문자열: 텍스트 기반 정보용</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>숫자: 숫자형 데이터의 경우</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>시간: 날짜/타임스탬프용</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":323,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-53.jpg\" alt=\"\" class=\"wp-image-323\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#how-to-manage-my-metadata%3F\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터를 어떻게 관리하나요?</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#manage-metadata-fields-in-the-knowledge-base\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 기반에서 메타데이터 필드 관리</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에서 메타데이터 필드를 만들고, 수정하고, 삭제할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>여기에서 메타데이터 필드를 변경하면 해당 지식 기반 전체에 영향을 미칩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#get-started-with-the-metadata-panel\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 패널 시작하기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 패널에 액세스</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>메타데이터 패널에 액세스하려면&nbsp;<strong>지식 기반</strong>&nbsp;페이지 로 이동하여&nbsp;<strong>메타데이터를</strong>&nbsp;클릭하세요 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":324,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-54-1024x597.jpg\" alt=\"\" class=\"wp-image-324\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:image {\"id\":325,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-55-1024x640.jpg\" alt=\"\" class=\"wp-image-325\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>기본 제공 메타데이터 대 사용자 지정 메타데이터</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td></td><td><strong>내장된 메타데이터</strong></td><td><strong>사용자 정의 메타데이터</strong></td></tr></thead><tbody><tr><td>위치</td><td>메타데이터 패널의 하단 섹션</td><td>메타데이터 패널의 상단 섹션</td></tr><tr><td>활성화</td><td>기본적으로 비활성화되어 있습니다. 수동 활성화가 필요합니다.</td><td>필요에 따라 추가하세요</td></tr><tr><td>세대</td><td>시스템은 자동으로 필드 값을 추출하고 생성합니다.</td><td>사용자 정의 및 수동 추가</td></tr><tr><td>편집 중</td><td>필드와 값은 생성된 후에는 수정할 수 없습니다.</td><td>필드와 값을 편집하거나 삭제할 수 있습니다.</td></tr><tr><td>범위</td><td>활성화 시 모든 기존 문서와 새 문서에 적용됩니다.</td><td>메타데이터 목록에 저장됨; 문서에 대한 수동 할당이 필요함</td></tr><tr><td>전지</td><td>시스템 정의 필드는 다음과 같습니다. 문서 이름(문자열) 업로더(문자열) 업로드_날짜(시간) 마지막 업데이트 날짜(시간) 소스(문자열)</td><td>기본 필드가 없습니다. 모든 필드는 수동으로 생성해야 합니다.</td></tr><tr><td>값 유형</td><td>문자열: 텍스트 값의 경우 숫자: 숫자 값의 경우 시간: 날짜 및 타임스탬프</td><td>문자열: 텍스트 값의 경우 숫자: 숫자 값의 경우 시간: 날짜 및 타임스탬프</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#create-new-metadata-fields\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>새 메타데이터 필드 만들기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>새로운 메타데이터 필드를 생성하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>+메타데이터 추가를</strong>&nbsp;클릭하여&nbsp;<strong>새 메타데이터</strong>&nbsp;대화 상자 를 엽니다&nbsp;.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":326,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-56-1024x640.jpg\" alt=\"\" class=\"wp-image-326\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>값 유형을 선택하세요.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>필드의 이름을 지정합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>명명 규칙: 소문자, 숫자, 밑줄만 사용하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":327,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-57.jpg\" alt=\"\" class=\"wp-image-327\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":4} -->\n<ol start=\"4\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>변경 사항을 적용하려면&nbsp;<strong>\'</strong><strong>저장\'을</strong>&nbsp;클릭하세요 .</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":328,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-58-1024x640.jpg\" alt=\"\" class=\"wp-image-328\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#edit-metadata-fields\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 필드 편집</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>메타데이터 필드를 편집하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>필드 옆에 있는 편집 아이콘을 클릭하면&nbsp;<strong>이름 바꾸기</strong>&nbsp;대화 상자가 열립니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":331,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-61-1024x640.jpg\" alt=\"\" class=\"wp-image-331\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>이름</strong>&nbsp;필드 에 새 이름을 입력합니다&nbsp;.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>참고: 필드 이름만 수정할 수 있고 값 유형은 수정할 수 없습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":329,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-59.jpg\" alt=\"\" class=\"wp-image-329\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>변경 사항을 적용하려면&nbsp;<strong>\'</strong><strong>저장\'을</strong>&nbsp;클릭하세요 .</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>참고: 필드 변경 사항은 지식 기반의 모든 관련 문서에 업데이트됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":330,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-60-1024x640.jpg\" alt=\"\" class=\"wp-image-330\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#delete-metadata-fields\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 필드 삭제</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>메타데이터 필드를 삭제하려면 해당 필드 옆에 있는 삭제 아이콘을 클릭하여 삭제합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>참고: 필드를 삭제하면 해당 필드와 해당 필드의 모든 값이 지식 기반의 모든 문서에서 삭제됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":332,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-62-1024x640.jpg\" alt=\"\" class=\"wp-image-332\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#edit-metadata\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 편집</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#bulk-edit-metadata-in-the-metadata-editor\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 편집기에서 메타데이터 대량 편집</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에서 메타데이터를 대량으로 편집할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 편집기에 액세스</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>메타데이터 편집기에 액세스하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>지식 기반에서 왼쪽에 있는 확인란을 사용하여 문서를 선택하세요.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":333,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-63-1024x600.jpg\" alt=\"\" class=\"wp-image-333\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>하단 작업 표시줄에서&nbsp;<strong>메타데이터를</strong>&nbsp;클릭하여 메타데이터 편집기를 엽니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":334,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-64-1024x640.jpg\" alt=\"\" class=\"wp-image-334\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>대량 메타데이터 추가</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>대량으로 메타데이터를 추가하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>편집기에서&nbsp;<strong>+</strong><strong>메타데이터 추가를</strong>&nbsp;클릭하면 다음을 수행할 수 있습니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":335,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-65.jpg\" alt=\"\" class=\"wp-image-335\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>드롭다운이나 검색창에서 기존 필드를 추가합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":336,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-66.jpg\" alt=\"\" class=\"wp-image-336\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>+새 메타데이터를</strong>&nbsp;통해 새로운 필드를 만듭니다&nbsp;.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>새로운 필드는 자동으로 지식 기반에 추가됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":337,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-67.jpg\" alt=\"\" class=\"wp-image-337\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>관리를</strong>&nbsp;통해 메타데이터 패널에 접근하여 메타데이터 필드를 관리합니다&nbsp;.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":339,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-69.jpg\" alt=\"\" class=\"wp-image-339\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><em>(선택 사항)</em>&nbsp;새 필드에 대한 값을 입력합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":338,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-68.jpg\" alt=\"\" class=\"wp-image-338\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>날짜 선택기는 시간 유형 필드를 위한 것입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":340,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-70.jpg\" alt=\"\" class=\"wp-image-340\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>변경 사항을 적용하려면&nbsp;<strong>\'</strong><strong>저장\'을</strong>&nbsp;클릭하세요 .</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>대량 업데이트 메타데이터</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>대량으로 메타데이터를 업데이트하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>편집기에서:</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>값 추가:</strong>&nbsp;필드 상자에 직접 입력하세요.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>값 재설정:</strong>&nbsp;마우스를 올려 놓았을 때 나타나는 파란색 점을 클릭하세요.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":341,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-71.jpg\" alt=\"\" class=\"wp-image-341\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>값 삭제:</strong>&nbsp;필드를 지우거나&nbsp;<strong>다중 값</strong>&nbsp;카드를 삭제합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":342,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-72.jpg\" alt=\"\" class=\"wp-image-342\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>필드 삭제:</strong>&nbsp;삭제 아이콘을 클릭합니다(필드는 취소선이 그어져 회색으로 표시됩니다).</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>참고: 이렇게 하면 해당 문서에서만 필드가 삭제되고, 지식 기반에서는 삭제되지 않습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":343,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-73.jpg\" alt=\"\" class=\"wp-image-343\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>변경 사항을 적용하려면&nbsp;<strong>\'</strong><strong>저장\'을</strong>&nbsp;클릭하세요 .</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>업데이트 범위 설정</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>변경 사항을 제어하려면&nbsp;<strong>모든 문서에 적용을</strong>&nbsp;사용하세요 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>선택 안 함(기본값)</strong>&nbsp;: 해당 필드가 이미 있는 문서만 업데이트합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>선택됨</strong>&nbsp;: 선택한 모든 문서에서 필드를 추가하거나 업데이트합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":344,\"sizeSlug\":\"full\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-full\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-74.jpg\" alt=\"\" class=\"wp-image-344\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#edit-metadata-on-the-document-details-page\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>문서 세부 정보 페이지에서 메타데이터 편집</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>단일 문서의 메타데이터는 해당 세부 정보 페이지에서 편집할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 편집 모드에 액세스</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>단일 문서의 메타데이터를 편집하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>문서 세부 정보 페이지에서&nbsp;<strong>레이블 지정 시작을</strong>&nbsp;클릭하여 편집을 시작합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":345,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-75-1024x598.jpg\" alt=\"\" class=\"wp-image-345\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:image {\"id\":346,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-76-1024x600.jpg\" alt=\"\" class=\"wp-image-346\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 추가</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>단일 문서의 메타데이터 필드와 값을 추가하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>+메타데이터 추가를</strong>&nbsp;클릭하세요&nbsp;.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":347,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-77-1024x600.jpg\" alt=\"\" class=\"wp-image-347\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>+새 메타데이터를</strong>&nbsp;통해 새로운 필드를 만듭니다&nbsp;.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>새로운 필드는 자동으로 지식 기반에 추가됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":348,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-78-1024x600.jpg\" alt=\"\" class=\"wp-image-348\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>드롭다운이나 검색창에서 기존 필드를 추가합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":349,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-79-1024x602.jpg\" alt=\"\" class=\"wp-image-349\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>관리를</strong>&nbsp;통해 메타데이터 패널에 액세스합니다&nbsp;.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":350,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-80-1024x600.jpg\" alt=\"\" class=\"wp-image-350\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><em>(선택 사항)</em>&nbsp;새 필드에 대한 값을 입력합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":351,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-81-1024x600.jpg\" alt=\"\" class=\"wp-image-351\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>변경 사항을 적용하려면&nbsp;<strong>\'</strong><strong>저장\'을</strong>&nbsp;클릭하세요 .</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 편집</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>단일 문서의 메타데이터 필드와 값을 업데이트하려면:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>오른쪽 상단의&nbsp;<strong>\'</strong><strong>편집\'을</strong>&nbsp;클릭하여 편집을 시작하세요.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":352,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-82-1024x601.jpg\" alt=\"\" class=\"wp-image-352\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>메타데이터 편집:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>값 업데이트:</strong>&nbsp;값 필드에 직접 입력하거나 삭제합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>참고: 값 자체는 수정할 수 있지만 값 이름은 수정할 수 없습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>필드 삭제:</strong>&nbsp;삭제 아이콘을 클릭하세요.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>참고: 이렇게 하면 해당 문서에서만 필드가 삭제되고, 지식 기반에서는 삭제되지 않습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":353,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-83-1024x600.jpg\" alt=\"\" class=\"wp-image-353\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>변경 사항을 적용하려면&nbsp;<strong>\'</strong><strong>저장\'을</strong>&nbsp;클릭하세요 .</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#how-to-filter-documents-with-metadata%3F\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터가 있는 문서를 필터링하는 방법은?</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/guides/knowledge-base/integrate-knowledge-within-application\" target=\"_blank\" rel=\"noreferrer noopener\"><strong><em>애플리케이션</em></strong><strong><em> </em></strong><strong><em>내</em></strong><strong><em> </em></strong><strong><em>지식</em></strong><strong><em> </em></strong><strong><em>기반</em></strong><strong><em> </em></strong><strong><em>통합</em></strong></a>&nbsp;에서&nbsp;<strong>메타데이터 필터링을</strong>&nbsp;참조하세요&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#api-documentation\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>API 문서</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api\" target=\"_blank\" rel=\"noreferrer noopener\"><strong><em>API</em></strong><strong><em>를</em></strong><strong><em> </em></strong><strong><em>통한</em></strong><strong><em> </em></strong><strong><em>데이터</em></strong><strong><em> </em></strong><strong><em>세트</em></strong><strong><em> </em></strong><strong><em>유지</em></strong><strong><em> </em></strong><strong><em>관리를</em></strong></a>&nbsp;참조하세요&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/metadata#faq\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>자주 묻는 질문</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>메타데이터로 무엇을 할 수 있나요?</strong><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>스마트 필터링으로 더 빠르게 정보를 찾으세요.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>민감한 콘텐츠에 대한 액세스를 제어합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>데이터를 더 효과적으로 구성하세요.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>메타데이터 규칙에 따라 워크플로를 자동화합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>필드와 값: 차이점은 무엇인가요?</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td></td><td><strong>정의</strong></td><td><strong>형질</strong></td><td><strong>예시</strong></td></tr></thead><tbody><tr><td>메타데이터 패널의 메타데이터 필드</td><td>문서 속성을 설명하는 시스템 정의 속성</td><td>지식 기반의 모든 문서에서 접근 가능한 글로벌 필드</td><td>저자, 유형, 날짜 등</td></tr><tr><td>문서 세부 정보 페이지의 메타데이터 값</td><td>개별 문서 요구 사항에 따라 태그가 지정된 사용자 정의 메타데이터</td><td>문서 내용 및 컨텍스트에 따라 할당된 고유한 메타데이터 값</td><td>문서 A의 \"작성자\" 필드는 \"Mary\" 값으로 설정되고, 문서 B에서는 \"John\" 값으로 설정됩니다.</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>다양한 삭제 옵션은 어떻게 작동하나요?</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>행동</strong></td><td><strong>단계</strong></td><td><strong>영향</strong></td><td><strong>결과</strong></td></tr></thead><tbody><tr><td>메타데이터 패널에서 필드 삭제</td><td>메타데이터 패널에서 필드 옆에 있는 삭제 아이콘을 클릭합니다.</td><td>글로벌 - 모든 문서에 영향을 미칩니다.</td><td>필드와 모든 값이 지식 기반에서 영구적으로 삭제됨</td></tr><tr><td>메타데이터 편집기에서 필드 삭제</td><td>메타데이터 편집기에서 필드 옆에 있는 삭제 아이콘을 클릭합니다.</td><td>선택된 문서만</td><td>선택한 문서에서 필드가 삭제되었습니다. 지식 기반에는 그대로 남아 있습니다.</td></tr><tr><td>문서 세부 정보 페이지에서 필드 삭제</td><td>편집 모드에서 필드 옆에 있는 삭제 아이콘을 클릭합니다.</td><td>현재 문서만</td><td>현재 문서에서 필드가 삭제되었습니다. 지식 기반에는 그대로 남아 있습니다.</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>애플리케이션 내 지식 기반 통합</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#creating-an-application-integrated-with-knowledge-base\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 기반과 통합된 애플리케이션 만들기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\"지식 기반\"</strong>&nbsp;은&nbsp;LLM을 통해 사용자 질문에 대한 정확한 답변을 제공하는 외부 정보 소스로 활용될 수 있습니다.&nbsp;Dify에서는 기존 지식 기반을 모든&nbsp;<a href=\"https://docs.dify.ai/en/guides/application-orchestrate#application_type\"><strong>유형의</strong><strong> </strong><strong>애플리케이션</strong><strong> </strong><strong>과</strong><strong> </strong><strong>연결할</strong><strong> </strong><strong>수</strong><strong> </strong><strong>있습니다.</strong></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>채팅 도우미를 예로 들면, 그 과정은 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>지식 으로 이동&nbsp;<strong>- </strong><strong>지식 생성 - 파일 업로드</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Studio 로 이동&nbsp;<strong>- </strong><strong>애플리케이션 만들기 - 챗봇 선택</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>컨텍스트를</strong>&nbsp;입력하고&nbsp;<strong>추가를</strong>&nbsp;클릭한&nbsp;후 생성된 지식 기반 중 하나를 선택합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>지식 기반에서 문서 검색을 세분화하려면&nbsp;<strong>메타데이터 필터링을</strong>&nbsp;사용하세요 .</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>컨텍스트 설정 - 검색 설정</strong>&nbsp;에서&nbsp;<strong>검색 설정을</strong>&nbsp;구성합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>기능 추가</strong>&nbsp;에서&nbsp;인용&nbsp;<strong>및 귀속 활성화</strong></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>디버그 및 미리보기</strong>&nbsp;에서&nbsp;디버깅을 위한 지식 기반과 관련된 사용자 질문을 입력합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>디버깅 후,&nbsp;<strong>게시</strong>&nbsp;버튼을 클릭하면 여러분의 지식을 바탕으로 AI 애플리케이션을 만들 수 있습니다!</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#connecting-knowledge-and-setting-retrieval-mode\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 연결 및 검색 모드 설정</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>여러 지식 기반을 활용하는 애플리케이션에서는 검색된 콘텐츠의 정확도를 높이기 위해 검색 모드를 구성하는 것이 필수적입니다. 지식 기반 검색 모드를 설정하려면&nbsp;<strong>컨텍스트 - 검색 설정 - 순위 재지정 설정</strong>&nbsp;으로 이동하세요 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#retrieval-setting\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>검색 설정</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>검색기는 애플리케이션에 연결된 모든 지식 베이스를 검색하여 사용자 질문과 관련된 텍스트 콘텐츠를 찾습니다. 검색 결과는 통합됩니다. 다중 경로 검색 모드의 기술 흐름도는 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":354,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-84-1024x357.jpg\" alt=\"\" class=\"wp-image-354\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>이 방법은 \"Context\"</strong>&nbsp;에 연결된 모든 지식 기반을 동시에 쿼리하여&nbsp;여러 지식 기반에서 관련 텍스트 덩어리를 찾고, 사용자 질문과 일치하는 모든 콘텐츠를 수집한 후, 궁극적으로 Rerank 전략을 적용하여 사용자에게 가장 적합한 콘텐츠를 식별합니다. 이 검색 방식은 여러 지식 기반을 동시에 활용하여 더욱 포괄적이고 정확한 결과를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":355,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-85-1024x580.jpg\" alt=\"\" class=\"wp-image-355\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>예를 들어, 세 개의 지식 베이스 K1, K2, K3가 있는 애플리케이션 A에서 사용자가 질문을 보내면 관련 콘텐츠 여러 개가 검색되어 이 지식 베이스에서 결합됩니다. 가장 관련성 높은 콘텐츠를 식별하기 위해 Rerank 전략을 사용하여 사용자 질의와 가장 관련성이 높은 콘텐츠를 찾아 결과의 정확도와 신뢰성을 높입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>실제 Q&amp;A 시나리오에서는 각 지식 베이스의 콘텐츠 출처와 검색 방법이 다를 수 있습니다. 검색에서 반환된 혼합 콘텐츠를 관리하기 위해&nbsp;<a href=\"https://docs.dify.ai/en/learn-more/extended-reading/retrieval-augment/rerank\"><strong>Rerank </strong><strong>전략은</strong></a>&nbsp;정교한 정렬 메커니즘 역할을 합니다. 이 전략은 후보 콘텐츠가 사용자 질문과 잘 일치하도록 보장하고, 여러 지식 베이스에서 결과 순위를 최적화하여 가장 적합한 콘텐츠를 식별함으로써 답변 품질과 전반적인 사용자 경험을 향상시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Rerank 사용과 관련된 비용과 비즈니스 요구 사항을 고려하여 다중 경로 검색 모드는 두 가지 Rerank 설정을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>가중 점수</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 설정은 내부 채점 메커니즘을 사용하며 외부 Rerank 모델을 필요로 하지 않으므로&nbsp;<strong>추가 처리 비용이 발생하지 않습니다</strong>&nbsp;. 의미론 또는 키워드에 대한 가중치 비율 슬라이더를 조정하여 가장 적합한 콘텐츠 매칭 전략을 선택할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>1의 의미적 가치</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 모드는 의미 검색만 활성화합니다. 임베딩 모델을 활용하면 질의어의 정확한 단어가 지식 베이스에 나타나지 않더라도 검색 심도를 향상시킬 수 있습니다. 임베딩 모델은 관련 콘텐츠를 반환하기 위해 벡터 거리를 계산하기 때문입니다. 또한, 다국어 콘텐츠를 처리할 때 의미 검색은 여러 언어의 의미를 포착하여 더욱 정확한 교차 언어 검색 결과를 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>키워드 가치 1</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 모드는 키워드 검색만 활성화합니다. 사용자 입력 텍스트를 지식 베이스의 전체 텍스트와 대조하므로 사용자가 정확한 정보나 용어를 알고 있는 경우에 적합합니다. 이 방법은 리소스 효율성이 뛰어나 대규모 문서 저장소에서 정보를 빠르게 검색하는 데 적합합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>사용자 정의 키워드 및 의미적 가중치</strong></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>의미론적 또는 키워드 검색 모드만 활성화하는 것 외에도, 유연한 맞춤형 가중치 점수를 제공합니다. 두 모드의 가중치를 지속적으로 조정하여 비즈니스 상황에 가장 적합한 가중치 비율을 결정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>재순위 모델</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Rerank 모델은 사용자의 질문과 제공된 각 후보 문서 간의 관련성 점수를 계산하는 외부 채점 시스템으로, 의미 순위의 결과를 개선하고 관련성을 기준으로 높은 순서에서 낮은 순서로 정렬된 문서 목록을 반환합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 방법은 약간의 추가 비용이 발생하지만 의미적 쿼리와 키워드 일치를 결합한 콘텐츠나 다국어로 반환된 콘텐츠와 같은 복잡한 지식 기반 콘텐츠를 처리하는 데 더 적합합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/retrieval-augment/rerank\"><strong>재순위</strong></a>&nbsp;에 대해 자세히 알아보려면 여기를 클릭하세요&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify는 현재 여러 Rerank 모델을 지원합니다. 외부 Rerank 모델을 사용하려면 API 키를 제공해야 합니다. \"모델 제공자\" 페이지에 Rerank 모델(예: Cohere, Jina AI 등)의 API 키를 입력하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":356,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-86-1024x719.jpg\" alt=\"\" class=\"wp-image-356\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>조정 가능한 매개변수</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>TopK</strong>&nbsp;: 사용자 질의와 가장 유사하다고 판단되는 텍스트 청크를 얼마나 많이 검색할지 결정합니다. 또한 선택한 모델의 컨텍스트 창에 따라 청크 수를 자동으로 조정합니다. 기본값은&nbsp;<strong>3</strong>&nbsp;이며 , 숫자가 높을수록 더 많은 텍스트 청크를 검색합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>점수 임계값</strong>&nbsp;: 청크를 검색하는 데 필요한 최소 유사도 점수를 설정합니다. 이 점수를 초과하는 청크만 검색됩니다. 기본값은&nbsp;<strong>0.5</strong>&nbsp;입니다 . 임계값이 높을수록 더 높은 유사도가 요구되므로 검색되는 청크 수가 줄어듭니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#metadata-filtering\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>메타데이터 필터링</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#chatflow%2Fworkflow\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>챗플로우/워크플로우</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식&nbsp;<strong>검색</strong>&nbsp;노드를 사용하면 메타데이터 필드를 사용하여 문서를 필터링할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#steps\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>단계</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>필터 모드 선택:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>비활성화(기본값):</strong>&nbsp;메타데이터 필터링이 없습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>자동:&nbsp;지식 검색</strong>&nbsp;노드 의 쿼리 변수에서 필터가 자동으로 구성됩니다&nbsp;.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>참고: 자동 모드에서는 문서 검색을 위해 모델 선택이 필요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":357,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-87-1024x600.jpg\" alt=\"\" class=\"wp-image-357\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>수동:</strong>&nbsp;필터를 수동으로 구성합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":358,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-88-1024x600.jpg\" alt=\"\" class=\"wp-image-358\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>수동 모드의 경우 다음 단계를 따르세요.<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>조건을</strong>&nbsp;클릭하여&nbsp;구성 패널을 엽니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":359,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-89-1024x600.jpg\" alt=\"\" class=\"wp-image-359\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>+조건 추가를</strong>&nbsp;클릭하세요&nbsp;.<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>드롭다운 목록에서 선택한 지식 기반 내의 메타데이터 필드를 선택합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>참고: 여러 지식 기반을 선택한 경우 목록에는 공통 메타데이터 필드만 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>검색창을 사용하여 특정 필드를 찾으세요.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":362,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-92-1024x600.jpg\" alt=\"\" class=\"wp-image-362\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>더 많은 필드를 추가하려면 +조건 추가를</strong>&nbsp;클릭하세요&nbsp;.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":360,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-90-1024x600.jpg\" alt=\"\" class=\"wp-image-360\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>필터 값 추가:</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>변수:</strong>&nbsp;기존&nbsp;<strong>Chatflow/Workflow</strong>&nbsp;변수에서 선택합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":361,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-91-1024x600.jpg\" alt=\"\" class=\"wp-image-361\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>상수:</strong>&nbsp;구체적인 값을 입력하세요.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>시간 유형 필드는 상수로만 필터링할 수 있습니다. 날짜 선택기는 시간 유형 필드용입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":363,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-93-1024x601.jpg\" alt=\"\" class=\"wp-image-363\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>필터 값은 대소문자를 구분하며 정확한 일치를 요구합니다. 예: 필터&nbsp;starts with \"App\"또는 필터&nbsp;contains \"App\"는 \"Apple\"과 일치하지만 \"apple\" 또는 \"APPLE\"과는 일치하지 않습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":6} -->\n<ol start=\"6\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>논리 연산자 설정:<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>AND: 모든 조건과 일치</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>OR: 모든 조건과 일치</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":364,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-94-1024x600.jpg\" alt=\"\" class=\"wp-image-364\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":7} -->\n<ol start=\"7\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>설정을 저장하려면 패널 바깥쪽을 클릭하세요.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#chatbot\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>챗봇</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식</strong>&nbsp;(왼쪽 하단) 아래에서&nbsp;<strong>메타데이터 필터링에</strong>&nbsp;액세스하세요 . 구성 단계는&nbsp;<strong>Chatflow/Workflow</strong>&nbsp;와 동일합니다&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":365,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-95-1024x601.jpg\" alt=\"\" class=\"wp-image-365\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#view-linked-applications-in-the-knowledge-base\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 기반에서 연결된 애플리케이션 보기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 베이스 왼쪽에는 연결된 모든 앱이 표시됩니다. 원형 아이콘 위에 마우스를 올리면 연결된 모든 앱 목록이 표시됩니다. 오른쪽의 바로가기 버튼을 클릭하면 빠르게 탐색할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":366,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-96-1024x348.jpg\" alt=\"\" class=\"wp-image-366\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/integrate-knowledge-within-application#frequently-asked-questions\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>자주 묻는 질문</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":11} -->\n<ol start=\"11\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>멀티 리콜 모드에서 Rerank 설정을 어떻게 선택해야 합니까?</strong></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>사용자가 정확한 정보나 용어를 알고 있다면 키워드 검색을 사용하여 정확한 검색 결과를 얻을 수 있습니다. 이 경우,&nbsp;가중치 설정에서&nbsp;<strong>\"</strong><strong>키워드\"를 1로 설정하세요.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반에 정확한 용어가 포함되어 있지 않거나 언어 간 쿼리가 포함된 경우&nbsp;가중치 설정에서&nbsp;<strong>\"</strong><strong>의미론적\"을 1로 설정하는 것이 좋습니다.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>실제 사용자 쿼리에 익숙하고 의미론과 키워드의 비율을 조정하고 싶은 경우,&nbsp;<strong>가중치 설정</strong>&nbsp;에서 비율을 수동으로 조정할 수 있습니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반이 복잡하고 간단한 의미적 또는 키워드 일치만으로는 충분하지 않은 경우(그리고 매우 정확한 답변이 필요하고 더 많은 비용을 지불할 의향이 있는 경우)&nbsp;콘텐츠 검색을 위해&nbsp;<strong>재순위 모델을 사용하는 것을 고려하세요.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>\"가중치 점수\"를 찾는 데 문제가 발생하거나 Rerank 모델을 구성해야 하는 경우 어떻게 해야 합니까?</strong></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>지식 기반 검색 방법이 다중 경로 검색에 영향을 미치는 방식은 다음과 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":367,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-97-1024x882.jpg\" alt=\"\" class=\"wp-image-367\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>여러 지식베이스를 참조할 때 \"가중치 점수\"를 조정할 수 없고 오류 메시지가 나타나면 어떻게 해야 합니까?</strong></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 문제는 여러 참조된 지식 베이스에 사용된 임베딩 모델이 일치하지 않아 발생하며, 검색 콘텐츠 충돌을 방지하기 위해 이 알림이 표시됩니다. \"모델 공급자\"에서 Rerank 모델을 설정하고 활성화하거나 지식 베이스의 검색 설정을 통합하는 것이 좋습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":4} -->\n<ol start=\"4\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>다중 리콜 모드에서 \"가중치 점수\" 옵션을 찾을 수 없고, 재순위 모델만 보이는 이유는 무엇입니까?</strong></li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>지식 기반이 \"경제적\" 색인 모드를 사용하고 있는지 확인해 주세요. 만약 그렇다면 \"고품질\" 색인 모드로 전환해 주세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\"><strong>검색 테스트 / 인용 및 귀속</strong></h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/retrieval-test-and-citation#1-retrieval-testing\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>1 검색 테스트</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify의 지식 기반은 텍스트 검색 테스트 기능을 제공하여 사용자 질의를 시뮬레이션하고 지식 기반 콘텐츠 블록을 검색할 수 있도록 합니다. 검색된 청크는 점수순으로 정렬된 후 LLM으로 전송됩니다. 일반적으로 질문과 콘텐츠 청크의 일치도가 높을수록 LLM의 답변이 원본 문서와 더 일치하여 더 나은 \"훈련 결과\"를 얻을 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>다양한 검색 방법과 매개변수 구성을</strong>&nbsp;사용하여 테스트하여&nbsp;검색된 텍스트 청크의 품질과 효과를 평가할 수 있습니다.&nbsp;<strong>청킹 모드</strong>&nbsp;에 따라 검색 테스트 방법이 달라집니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>일반</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>부모-자녀</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>일반적인 사용자 질문을&nbsp;<strong>소스 텍스트 필드 에 입력하고&nbsp;테스트를</strong>&nbsp;클릭하면&nbsp;오른쪽에서&nbsp;<strong>검색된 청크</strong>&nbsp;결과를 볼 수 있습니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>일반 모드</strong>&nbsp;에서는&nbsp;각 텍스트 청크가 독립적으로 표시됩니다. 청크 오른쪽 상단에 표시되는 점수는 해당 청크가 쿼리 키워드와 얼마나 일치하는지 나타냅니다. 점수가 높을수록 청크와 키워드 간의 일치도가 높음을 나타냅니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":368,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-98-1024x492.jpg\" alt=\"\" class=\"wp-image-368\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>콘텐츠 청크를 탭하면 참조된 콘텐츠의 세부 정보를 볼 수 있습니다. 각 청크 하단에는 원본 문서 정보가 표시되어 텍스트 청크가 적절한지 확인할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":370,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-100-1024x640.jpg\" alt=\"\" class=\"wp-image-370\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>\'기록\'</strong>&nbsp;에서&nbsp;과거 쿼리 기록을 확인할 수 있습니다. 지식 기반이 애플리케이션에 연결된 경우, 해당 애플리케이션 내에서 발생한 모든 쿼리도 여기에 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/retrieval-test-and-citation#modify-text-retrieval-setting\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>텍스트 검색 설정 수정</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>소스 텍스트 필드의 오른쪽 상단에 있는 아이콘을 클릭하여 현재 지식 베이스의 검색 방법 및 관련 매개변수를 변경하세요. 이러한 변경 사항은 디버깅을 위한 현재 검색 테스트 세션 중에만 적용되며, 다양한 검색 설정의 검색 성능을 비교할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 기반의 검색 방법을 영구적으로 수정하려면&nbsp;<strong>\"</strong><strong>지식 기반 설정\"</strong>&nbsp;&gt;&nbsp;<strong>\"</strong><strong>검색 설정\"</strong>&nbsp;으로 이동하여 변경하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":369,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-99-1024x497.jpg\" alt=\"\" class=\"wp-image-369\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>검색 테스트를 위한 제안 단계:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>일반적인 사용자 질문을 다루는 테스트 케이스/테스트 질문 세트를 설계하고 구성합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>적절한 검색 전략을 선택하세요: 벡터 검색/전문 검색/하이브리드 검색. 다양한 검색 방법의 장단점은 확장 자료&nbsp;<a href=\"https://docs.dify.ai/en/learn-more/extended-reading/retrieval-augment/\"><strong>\"</strong><strong>검색</strong><strong> </strong><strong>증강</strong><strong> </strong><strong>생성(RAG)\"</strong></a>&nbsp;을 참조하세요 .</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>검색 세그먼트 수(TopK)와 재현율 점수 임계값(Score)을 디버깅합니다. 문서 자체의 품질을 포함하여 애플리케이션 시나리오에 따라 적절한 매개변수 조합을 선택합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>TopK 값 및 검색 임계값(점수)을 구성하는 방법</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>TopK는 유사도 점수 내림차순으로 정렬했을 때 검색 청크의 최대 개수를 나타냅니다.</strong>&nbsp;TopK 값이 작을수록 더 적은 세그먼트를 회상하게 되어 관련 텍스트의 불완전한 회상을 초래할 수 있습니다. TopK 값이 클수록 더 많은 세그먼트를 회상하게 되어 의미적 관련성이 낮은 세그먼트를 회상하게 되어 LLM 응답의 품질이 저하될 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>검색 임계값(점수)은 재현율 세그먼트에 허용되는 최소 유사도 점수를 나타냅니다.</strong>&nbsp;재현율 점수가 낮을수록 더 많은 세그먼트를 검색하게 되므로 관련성이 낮은 세그먼트를 재현하게 될 수 있습니다. 재현율 점수 임계값이 높을수록 더 적은 세그먼트를 재현하게 되며, 너무 높으면 관련성이 높은 세그먼트가 누락될 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/retrieval-test-and-citation#2-citation-and-attribution\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>2. 인용 및 귀속</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>애플리케이션 내에서 지식 기반 효과를 테스트할 때&nbsp;<strong>작업 공간 - 기능 추가 - 인용 및 귀속</strong>&nbsp;으로 이동하여 인용 귀속 기능을 활성화할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":371,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-101-1024x703.jpg\" alt=\"\" class=\"wp-image-371\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>이 기능을 활성화한 후, 대규모 언어 모델이 지식 기반의 콘텐츠를 인용하여 질문에 응답할 때 응답 콘텐츠 아래에서&nbsp;<strong>원래 세그먼트 텍스트, 세그먼트 번호, 일치 정도</strong>&nbsp;등을 포함한 특정 인용 문단 정보를 볼 수 있습니다. 인용된 세그먼트 위에&nbsp;<strong>있는 지식 링크를</strong>&nbsp;클릭하면 지식 기반의 세그먼트 목록에 빠르게 액세스할 수 있어 개발자가 디버깅과 편집을 더 쉽게 할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":372,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-102-1024x712.jpg\" alt=\"\" class=\"wp-image-372\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong><a href=\"https://docs.dify.ai/en/guides/knowledge-base/retrieval-test-and-citation#view-linked-applications-in-the-knowledge-base\">​</a></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>지식 기반에서 연결된 애플리케이션 보기</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>지식 베이스 왼쪽에는 연결된 모든 앱이 표시됩니다. 원형 아이콘 위에 마우스를 올리면 연결된 모든 앱 목록이 표시됩니다. 오른쪽의 바로가기 버튼을 클릭하면 빠르게 탐색할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image {\"id\":373,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"http://192.168.101.245/wp-content/uploads/2025/07/image-103-1024x348.jpg\" alt=\"\" class=\"wp-image-373\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','dify 매뉴얼: 지식생성','','publish','open','closed','','dify-%eb%a7%a4%eb%89%b4%ec%96%bc','','','2025-10-18 19:07:50','2025-10-18 10:07:50','',0,'http://kbsi',0,'docs','',0),
(23,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">프롬프트 엔지니어링 이란?</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>AI가</strong><strong> 명확하게 생각하도록 가르치는 기술</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:group {\"layout\":{\"type\":\"constrained\"}} -->\n<div class=\"wp-block-group\"><!-- wp:group {\"layout\":{\"type\":\"constrained\"}} -->\n<div class=\"wp-block-group\"><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>AI에게 효과적인 지침을 설계하는 기술.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>코딩이나 머신러닝 지식은 필요하지 않음.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></div>\n<!-- /wp:group --></div>\n<!-- /wp:group -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>핵심:</strong> 명확하고, 구체적이며, 의도를 담아 지시.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>AI 모델(LLM)은 기본적으로 방대한 텍스트 데이터의 패턴을 학습하여 다음 단어를 예측하는 \'예측 엔진\'.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>프롬프트는 </strong><strong>얻고자 하는 </strong><strong>결과물의 청사진</strong>과 같음.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>(출처) Humanity’s Last Prompt Engineering Guide, Matthew Berman &amp; Nick Wentz, 2025</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">무엇이 좋은 프롬프트를 만드는가?</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>모델 (</strong><strong>Model</strong><strong>): </strong>각 LLM은 고유한 강점과 특징을 보유.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>문맥 (</strong><strong>Context</strong><strong>): </strong>입력하는 정보(문서, 예시)의 질이 결과의 정확도에 영향을 미침.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>구조 (</strong><strong>Structure</strong><strong>): </strong>명확한 형식은 출력의 일관성과 유용성을 제고.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>스타일과 톤 (</strong><strong>Style</strong><strong> + </strong><strong>Tone</strong><strong>): </strong>어조, 격식, 페르소나를 제어.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>모델 설정</strong><strong> </strong>: \'Temperature\' 같은 설정은 창의성과 정확성 사이의 균형을 조절.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:group {\"layout\":{\"type\":\"constrained\"}} -->\n<div class=\"wp-block-group\"><!-- wp:group {\"layout\":{\"type\":\"constrained\"}} -->\n<div class=\"wp-block-group\"><!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>예측 가능하고 사실적인 답변을 원할 때: Temperature를 0 ~ 0.3으로 설정</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>창의적인 결과물을 원할 때: Temperature를 0.7 ~ 1.0으로 설정</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list --></div>\n<!-- /wp:group --></div>\n<!-- /wp:group -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">잘못된 프롬프트 개선하기</h2>\n<!-- /wp:heading -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>문제점</td><td>❌ 나쁜 프롬프트 예시</td><td>✅ 개선된 프롬프트 예시</td></tr><tr><td>너무 모호함</td><td>요약해 줘.</td><td>아래 기사를 3개의 글머리 기호로 요약해 줘. 핵심 결과에 초점을 맞추고 서론은 반복하지 마.</td></tr><tr><td>청중 미지정</td><td>명확하게 다시 써줘.</td><td>바쁜 경영진을 위해 이 글을 다시 작성해 줘. 짧은 문장을 사용하고 불필요한 배경 정보는 제거해 줘.</td></tr><tr><td>역할/문맥 부족</td><td>이 초안 좀 도와줘.</td><td>너는 브랜드 카피라이터야. 이 초안의 톤을 더 자신감 있고 현대적으로 개선해 줘.</td></tr><tr><td>형식 미지정</td><td>좋은 대안은 뭐야?</td><td>3가지 대안을 번호 목록으로 제안해 줘. 각 대안에 대해 1~2문장으로 설명해 줘.</td></tr><tr><td>이유 요청 누락</td><td>여기서 최선의 선택은?</td><td>이 3가지 옵션을 각각의 장단점과 함께 평가하고, 간단한 근거와 함께 하나를 추천해 줘.</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">프롬프트 개선을 위한 체크 리스트</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>AI가</strong><strong> 만족스럽지 못한 결과물을 내놓았을 때 확인</strong><strong>할 사항</strong><strong>.</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>1.<strong>내가 너무 모호하게 지시했나?</strong> → 작업과 기대를 구체적으로 명시하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>2.<strong>역할이나 관점을 부여했나?</strong> → \"너는 OOO이야...\"라고 시작하면 톤과 사고방식을 설정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>3.<strong>입력값이</strong><strong> 완전하고 관련성이 있나?</strong> → 모델이 추론하는 데 필요한 모든 정보를 포함하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>4.<strong>명확한 출력 형식을 요청했나?</strong> → 글머리 기호, 단락, JSON 등 원하는 형식을 지정하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>5.<strong>이유나 논리를 물었나?</strong> → 판단이 필요할 경우 \"단계별로 생각해 줘\"라고 요청하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>6.<strong>복잡한 작업을 작은 부분으로 나누었나?</strong> → 복잡한 요청은 여러 단계로 나누어 집중적으로 지시하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">프롬프팅 기술</h2>\n<!-- /wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>제로샷</strong><strong> </strong><strong>프롬프팅</strong><strong> (</strong><strong>Zero-Shot</strong><strong> </strong><strong>Prompting</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 예시 없이 하나의 지시만 내리는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 간단하거나 맥락이 명확한 작업에 사용.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"이 고객 지원 티켓을 3개의 글머리 기호로 요약해 줘.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>퓨샷</strong><strong> </strong><strong>프롬프팅</strong><strong> (</strong><strong>Few-Shot</strong><strong> </strong><strong>Prompting</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 모델을 안내하기 위해 하나 이상의 예시를 제공하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 특정 구조, 톤, 형식이 필요할 때 사용.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"예시: 큰 피자에 버섯과 바질 추가. JSON 포맷 제공. 작은 피자에 올리브와 토마토 추가.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>시스템 </strong><strong>프롬프팅</strong><strong> (System </strong><strong>Prompting</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 모델의 행동이나 출력 구조에 대한 명확한 규칙을 설정하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 톤, 형식, 길이, 행동을 처음부터 제어하고 싶을 때.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"오직 JSON으로만 응답해. 아래 형식을 사용해.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>역할 </strong><strong>프롬프팅</strong><strong> (</strong><strong>Role</strong><strong> </strong><strong>Prompting</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 특정 페르소나나 관점을 부여하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 모델이 특정 톤, 전문성, 시각을 채택해야 할 때.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"너는 스타트업 창업자에게 재무 위험에 대해 코칭하는 CFO야.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>문맥 </strong><strong>프롬프팅</strong><strong> (</strong><strong>Contextual</strong><strong> </strong><strong>Prompting</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 관련 배경, 데이터, 시나리오를 제공하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 특정 분야의 지식이나 이전 대화 내용이 필요할 때.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"우리 브랜드 특징이야. 이 스타일을 사용해서 이 단락을 다시 작성해 줘.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>스텝백</strong><strong> </strong><strong>프롬프팅</strong><strong> (</strong><strong>Step-Back</strong><strong> </strong><strong>Prompting</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 모델에게 먼저 일반적인 질문을 해결하게 한 후, 그 통찰력을 특정 작업에 적용.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 창의적인 작업, 복잡한 추론, 시나리오 계획 시.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"훌륭한 FPS 게임의 5가지 흔한 환경은 뭐야?\" → \"이제 그 중 하나를 기반으로 레벨을 만들어 줘.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>연쇄적 사고 </strong><strong>프롬프팅</strong><strong> (</strong><strong>Chain</strong><strong>-of-</strong><strong>Thought</strong><strong> </strong><strong>Prompting</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 모델에게 추론 과정을 단계별로 보여달라고 지시하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 수학, 논리, 계획 등 투명한 추론 과정이 필요할 때.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"내가 3살 때, 내 파트너는 내 나이의 3배였어. 나는 지금 20살이야. 내 파트너는 몇 살일까? 단계별로 생각해 봐.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>자기 일관성 (</strong><strong>Self-Consistency</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 동일한 프롬프트를 여러 번 실행하여 가장 자주 나오거나 일관된 결과를 선택하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 정확성이 중요한 중대한 작업에 사용.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"이 경우 고객 이탈의 가장 가능성 있는 원인은 무엇인가? 이 프롬프트를 세 번 실행하고 공통된 주제를 요약해 줘.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>생각의 나무 (Tree of </strong><strong>Thoughts</strong><strong>, </strong><strong>ToT</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 단일한 선형적 답변 대신 여러 추론 경로를 탐색하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 브레인스토밍, 의사결정 등 여러 유효한 결과가 있는 작업에 사용.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"사용자를 오래 유지시키 위한 세 가지 전략을 각각의 장단점과 함께 나열해 줘. 그리고 가장 유망한 것을 선택해 줘.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>ReAct</strong><strong> (</strong><strong>Reason</strong><strong> + </strong><strong>Act</strong><strong>)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> 모델이 단계별로 추론하고 웹 검색이나 도구 호출과 같은 행동을 수행하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 외부 데이터 검색이나 상호작용이 필요한 도구 강화 에이전트에 사용.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"\'프롬프트 인젝션\'의 정의를 찾아보고 간단히 설명해 줘.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>자동 프롬프트 엔지니어링 (APE)</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>•<strong>정의:</strong> AI를 사용하여 다양한 버전의 프롬프트를 생성하고 테스트하는 것.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>사용 시점:</strong> 대규모 설계, 챗봇 훈련, 프롬프트 성능 최적화 시.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>예시:</strong> \"누군가 메탈리카 티셔츠를 주문할 수 있는 10가지 다른 방식의 프롬프트를 작성해 줘. 그런 다음 테스트하고, 점수를 매겨서, 가장 좋은 것을 선택해 줘.\"</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">프롬프트 품질 점검표</h2>\n<!-- /wp:heading -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>질문</strong></td><td><strong>점수 </strong><strong>(1-5)</strong></td></tr><tr><td>1. 작업이 명확하게 정의되었는가?</td><td></td></tr><tr><td>2. 모델에 명확한 역할이나 페르소나를 할당했는가?</td><td></td></tr><tr><td>3. 올바른 문맥이나 배경 정보를 제공했는가?</td><td></td></tr><tr><td>4. 원하는 출력 형식을 지정했는가? (목록, 단락, JSON 등)</td><td></td></tr><tr><td>5. 톤, 길이 또는 제약 조건에 대한 지침을 포함했는가?</td><td></td></tr><tr><td>6. (해당하는 경우) 추론 과정이나 단계별 사고를 요청했는가?</td><td></td></tr><tr><td>7. 프롬프트가 이해하기 쉽고 모호함이 없는가?</td><td></td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p>•<strong>30-35점:</strong> 강력하고 신뢰도 높은 프롬프트</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>20-29점:</strong> 괜찮지만, 수정하면 더 좋아질 수 있음</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>•<strong>20점 미만:</strong> 일관성 없거나 불분명한 결과를 낼 가능성이 높음</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','프롬프트 엔지니어링','','publish','open','closed','','%ed%94%84%eb%a1%ac%ed%94%84%ed%8a%b8-%ec%97%94%ec%a7%80%eb%8b%88%ec%96%b4%eb%a7%81','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(24,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>AI 이미지 생성 앱을 만드는 방법</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>페이지 복사</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>저자: 스티븐 린. Dify 기술 작가.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이미지 생성 기술이 발전하면서 Dall-e, Flux, Stable Diffusion 등 뛰어난 이미지 생성 제품이 많이 등장했습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 기사에서는 Dify를 사용하여 AI 이미지 생성 앱을 개발하는 방법을 알아봅니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>​<br>당신은 배울 것입니다<br>Dify를 사용하여 에이전트를 구축하는 방법<br>에이전트의 기본 개념<br>신속한 엔지니어링의 기본<br>도구 사용<br>대형 모델 환각의 개념<br>​</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>안정성 API 키 설정<br>여기를 클릭하면 Stability API 키 관리 페이지로 이동합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>아직 등록하지 않으셨다면 API 관리 페이지에 들어가기 전에 등록하라는 메시지가 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>관리 페이지에 접속한 후, copy키를 복사하려면 클릭하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다음으로, 다음 단계에 따라 Dify - 도구 - 안정성 에서 키를 입력해야 합니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify에 로그인하세요<br>도구 입력<br>안정성 선택<br>딸깍 하는 소리Authorize</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>키를 입력하고 저장하세요<br>​</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":2} -->\n<ol start=\"2\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>모델 공급자 구성<br>상호작용을 최적화하려면 사용자 지침을 구체화하는 LLM(모델 생성 모델)이 필요합니다. 즉, 이미지 생성을 위한 프롬프트를 작성하는 것이 필요합니다. 다음으로, 다음 단계에 따라 Dify에서 모델 제공자를 구성합니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>Dify 무료 버전은 200개의 무료 OpenAI 메시지 크레딧을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>메시지 크레딧이 부족한 경우 아래 이미지의 단계에 따라 다른 모델 공급자를 사용자 지정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>아바타 클릭 - 설정 - 모델 제공자</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>적합한 모델 공급업체를 찾지 못했다면 groq 플랫폼은 Llama와 같은 LLM에 대한 무료 통화 크레딧을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>groq API 관리 페이지 에 로그인하세요</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>API 키 만들기를 클릭하고 원하는 이름을 설정한 다음 API 키를 복사합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify - Model Providers 로 돌아가서 groqcloud를 선택 하고 Setup을 클릭합니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>API 키를 붙여넣고 저장합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>​</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":3} -->\n<ol start=\"3\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>에이전트 구축<br>Dify-Studio 로 돌아가서 빈칸에서 만들기를 선택합니다 .</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 실험에서는 Agent의 기본적인 사용법만 이해하면 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>에이전트란 ​​무엇인가</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>에이전트는 인간의 행동과 능력을 시뮬레이션하는 AI 시스템입니다. 자연어 처리를 통해 환경과 상호 작용하고, 입력 정보를 이해하며, 그에 상응하는 출력을 생성합니다. 또한, 에이전트는 \"인지\" 기능을 갖추고 있으며, 다양한 형태의 데이터를 처리 및 분석하고, 다양한 외부 도구와 API를 호출하여 작업을 완료함으로써 기능 범위를 확장합니다. 이러한 설계를 통해 에이전트는 복잡한 상황을 더욱 유연하게 처리하고 인간의 사고와 행동 패턴을 어느 정도 시뮬레이션할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>에이전트를 선택하고 이름을 입력하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>다음으로, 아래와 같이 에이전트 오케스트레이션 인터페이스에 들어갑니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>LLM을 선택하세요. 여기서는 groq에서 제공하는 Llama-3.1-70B를 예시로 사용합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>도구 에서 안정성을 선택하세요 :</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>​<br>프롬프트를 작성하세요<br>프롬프트는 에이전트의 핵심이며 출력 효과에 직접적인 영향을 미칩니다. 일반적으로 프롬프트가 구체적일수록 출력이 좋아지지만, 너무 긴 프롬프트는 부정적인 결과를 초래할 수도 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>프롬프트를 조정하는 엔지니어링을 프롬프트 엔지니어링이라고 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 실험에서는 프롬프트 엔지니어링을 완벽하게 익히지 못할까봐 걱정할 필요가 없습니다. 나중에 단계적으로 학습하게 될 것입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>가장 간단한 프롬프트부터 시작해 보겠습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>복사</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>AI에게 물어보세요<br>Draw the specified content according to the user\'s prompt using stability_text2image.<br>사용자가 명령을 입력할 때마다 에이전트는 이 시스템 수준 명령을 알고, 사용자의 그리기 작업을 실행할 때 안정성 도구를 호출해야 한다는 것을 이해합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>예를 들어: 책을 펼쳐 들고 있는 소녀를 그려보세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>​<br>프롬프트를 쓰고 싶지 않으세요? 물론 가능합니다!<br>지침의 오른쪽 상단에 있는 생성을 클릭하세요 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\'지침\' 에 요구 사항을 입력 하고 \'생성\'을 클릭하세요 . 오른쪽에 생성된 프롬프트는 AI가 생성한 프롬프트입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>하지만 프롬프트에 대한 올바른 이해를 얻으려면 초기 단계에서는 이 기능에 의존해서는 안 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>​<br>게시하다<br>오른쪽 상단 모서리에 있는 게시 버튼을 클릭하고 게시 후 앱 실행을 선택하면 온라인으로 실행되는 에이전트에 대한 웹 페이지를 얻을 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 웹페이지의 URL을 복사하여 다른 친구들과 공유하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>​<br>질문 1: 생성된 이미지의 스타일을 어떻게 지정하나요?<br>사용자의 입력 명령에 스타일 지침을 추가할 수 있습니다. 예: 애니메이션 스타일, 책을 펼친 소녀를 그려보세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>하지만 기본 스타일을 애니메이션 스타일로 설정하려면 시스템 프롬프트에 추가할 수 있습니다. 이전에 사용자 명령이 실행될 때마다 시스템 프롬프트가 알려지고 더 높은 우선순위를 갖는다는 것을 배웠기 때문입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>복사</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>AI에게 물어보세요<br>Draw the specified content according to the user\'s prompt using stability_text2image, the picture is in anime style.<br>​<br>질문 2: 일부 사용자의 특정 요청을 거부하는 방법은 무엇입니까?<br>많은 비즈니스 시나리오에서 불합리한 콘텐츠를 출력하는 것을 피해야 하지만, LLM은 종종 \"멍청한\" 경우가 많아 출력 콘텐츠가 틀렸더라도 사용자의 지시를 아무런 의심 없이 따릅니다. 모델이 허위 콘텐츠를 조작하여 사용자에게 답변을 제공하려고 애쓰는 이러한 현상을 모델 환각 이라고 합니다 . 따라서 필요한 경우 모델이 사용자 요청을 거부해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>또한, 사용자는 사업과 관련 없는 내용을 질문할 수도 있으며, 이러한 요청을 에이전트가 거부해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>마크다운 형식을 사용하여 다양한 프롬프트를 분류할 수 있습니다. 에이전트가 불합리한 콘텐츠를 거부하도록 가르치는 프롬프트는 \"제약 조건\" 제목 아래에 작성하면 됩니다. 물론 이 형식은 표준화를 위한 것이며, 원하는 형식을 직접 만들 수도 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>복사</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>AI에게 물어보세요</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Task</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Draw the specified content according to the user\'s prompt using stability_text2image, the picture is in anime style.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Constraints</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>If the user requests content unrelated to drawing, reply: \"Sorry, I don\'t understand what you\'re saying.\"<br>예를 들어, 이렇게 물어보죠: 오늘 저녁은 뭐 먹지?</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>좀 더 공식적인 비즈니스 시나리오에서는 민감한 단어 라이브러리를 호출하여 사용자 요청을 거부할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\'기능 추가 - 콘텐츠 관리\' 에 \"저녁 식사\"라는 키워드를 추가하세요 . 사용자가 키워드를 입력하면 Agent 앱에 \"죄송하지만 무슨 말씀인지 이해가 안 됩니다.\"라는 메시지가 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify 워크숍에 오신 것을 환영합니다! 이 튜토리얼은 Dify를 처음부터 배우고 싶은 초보자를 위해 설계되었습니다. 프로그래밍이나 AI 관련 배경 지식이 있든 없든, Dify의 핵심 개념과 사용법을 세부 사항 없이 단계별로 안내하여 완벽하게 익힐 수 있도록 도와드립니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>일련의 실험을 통해 Dify를 이해하도록 도와드리겠습니다. 각 실험에는 내용을 쉽게 따라하고 이해할 수 있도록 자세한 단계와 설명이 포함되어 있습니다. 실험에 지식 교육을 접목하여 실습을 통해 배우고 점진적으로 Dify에 대한 포괄적인 이해를 구축할 수 있도록 도와드립니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>사전 학습은 전혀 필요 없습니다! 가장 기본적인 개념부터 시작하여 점차 고급 주제로 안내해 드립니다. 완전 초보자든, 프로그래밍 경험이 있지만 AI 기술을 배우고 싶은 분이든, 이 튜토리얼은 필요한 모든 것을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>함께 학습 여정을 떠나 Dify의 무한한 가능성을 탐험해보세요!</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>기초</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>중급</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','작업장(Workshop)','','publish','open','closed','','%ec%9e%91%ec%97%85%ec%9e%a5workshop','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(25,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading {\"level\":1} -->\n<h1 class=\"wp-block-heading\" id=\"page-title\">AI 이미지 생성 앱을 만드는 방법</h1>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>페이지 복사</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><!-- wp:paragraph -->\n<p>저자: 스티븐 린. Dify 기술 작가.</p>\n<!-- /wp:paragraph --></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:paragraph -->\n<p>이미지 생성 기술이 발전하면서 Dall-e, Flux, Stable Diffusion 등 뛰어난 이미지 생성 제품이 많이 등장했습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 기사에서는 Dify를 사용하여 AI 이미지 생성 앱을 개발하는 방법을 알아봅니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/05ff829cf382e82c9ece2676032d2383.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"you-will-learn\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#you-will-learn\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#you-will-learn\"></a>당신은 배울 것입니다</h2>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Dify를 사용하여 에이전트를 구축하는 방법</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>에이전트의 기본 개념</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>신속한 엔지니어링의 기본</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>도구 사용</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>대형 모델 환각의 개념</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"1-setting-stablility-api-key\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#1-setting-stablility-api-key\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#1-setting-stablility-api-key\"></a>1. 안정성 API 키 설정</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://platform.stability.ai/account/keys\" target=\"_blank\" rel=\"noreferrer noopener\">여기를 클릭하면</a>&nbsp;Stability API 키 관리 페이지로 이동합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>아직 등록하지 않으셨다면 API 관리 페이지에 들어가기 전에 등록하라는 메시지가 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>관리 페이지에 접속한 후,&nbsp;<code>copy</code>키를 복사하려면 클릭하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/f73d82756bdf93c8863ac0b1f55fa5af.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>다음으로, 다음 단계에 따라&nbsp;<a href=\"https://cloud.dify.ai/tools\" target=\"_blank\" rel=\"noreferrer noopener\">Dify - 도구 - 안정성</a>&nbsp;에서 키를 입력해야 합니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Dify에 로그인하세요</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>도구 입력</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>안정성 선택</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>딸깍 하는 소리<code>Authorize</code></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/bcc961ffc8a341c8ba3137e475072f99.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>키를 입력하고 저장하세요</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"2-configure-model-providers\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#2-configure-model-providers\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#2-configure-model-providers\"></a>2. 모델 공급자 구성</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>상호작용을 최적화하려면 사용자 지침을 구체화하는 LLM(모델 생성 모델)이 필요합니다. 즉, 이미지 생성을 위한 프롬프트를 작성하는 것이 필요합니다. 다음으로, 다음 단계에 따라 Dify에서 모델 제공자를 구성합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Dify 무료 버전은 200개의 무료 OpenAI 메시지 크레딧을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>메시지 크레딧이 부족한 경우 아래 이미지의 단계에 따라 다른 모델 공급자를 사용자 지정할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>아바타</strong>&nbsp;클릭 - 설정 - 모델 제공자<strong></strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/4b4102f9027e2bda3fc520eaa8ea2354.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>적합한 모델 공급업체를 찾지 못했다면 groq 플랫폼은 Llama와 같은 LLM에 대한 무료 통화 크레딧을 제공합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://console.groq.com/keys\" target=\"_blank\" rel=\"noreferrer noopener\">groq API 관리 페이지</a>&nbsp;에 로그인하세요<a href=\"https://console.groq.com/keys\" target=\"_blank\" rel=\"noreferrer noopener\"></a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>API 키 만들기를</strong>&nbsp;클릭하고&nbsp;원하는 이름을 설정한 다음 API 키를 복사합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Dify - Model Providers</strong>&nbsp;로 돌아가서&nbsp;<strong>groqcloud를</strong>&nbsp;선택&nbsp;하고&nbsp;<strong>Setup을</strong>&nbsp;클릭합니다 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/0fda6e81dc23974576ddc21bda96e26d.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>API 키를 붙여넣고 저장합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/b250952afad12b39613aa27da5335fa3.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"3-build-an-agent\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#3-build-an-agent\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#3-build-an-agent\"></a>3. 에이전트 구축</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>Dify-Studio</strong>&nbsp;로 돌아가서&nbsp;<strong>빈칸에서 만들기를</strong>&nbsp;선택합니다&nbsp;.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/3b86940eadfe0ce14d175a9bb80fe5a9.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>이 실험에서는 Agent의 기본적인 사용법만 이해하면 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>에이전트란 ​​무엇인가</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>에이전트는 인간의 행동과 능력을 시뮬레이션하는 AI 시스템입니다. 자연어 처리를 통해 환경과 상호 작용하고, 입력 정보를 이해하며, 그에 상응하는 출력을 생성합니다. 또한, 에이전트는 \"인지\" 기능을 갖추고 있으며, 다양한 형태의 데이터를 처리 및 분석하고, 다양한 외부 도구와 API를 호출하여 작업을 완료함으로써 기능 범위를 확장합니다. 이러한 설계를 통해 에이전트는 복잡한 상황을 더욱 유연하게 처리하고 인간의 사고와 행동 패턴을 어느 정도 시뮬레이션할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>에이전트를</strong>&nbsp;선택하고&nbsp;이름을 입력하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/139ac0d2f4a10e2ec0e191457f4687a1.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>다음으로, 아래와 같이 에이전트 오케스트레이션 인터페이스에 들어갑니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/9045dbab8600e9c9d9632add787f26a6.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>LLM을 선택하세요. 여기서는 groq에서 제공하는 Llama-3.1-70B를 예시로 사용합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/47edc14c1d3c68eeb4ee4807b35df185.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>도구</strong>&nbsp;에서 안정성을 선택하세요&nbsp;:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/6e1c3dd63925fd9ba60568deb2602044.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/539060be4e014126f9c5fc96c53dc5a4.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"write-prompts\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#write-prompts\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#write-prompts\"></a>프롬프트를 작성하세요</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>프롬프트는 에이전트의 핵심이며 출력 효과에 직접적인 영향을 미칩니다. 일반적으로 프롬프트가 구체적일수록 출력이 좋아지지만, 너무 긴 프롬프트는 부정적인 결과를 초래할 수도 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>프롬프트를 조정하는 엔지니어링을 프롬프트 엔지니어링이라고 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>이 실험에서는 프롬프트 엔지니어링을 완벽하게 익히지 못할까봐 걱정할 필요가 없습니다. 나중에 단계적으로 학습하게 될 것입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>가장 간단한 프롬프트부터 시작해 보겠습니다.복사AI에게 물어보세요</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>Draw the specified content according to the user\'s prompt using stability_text2image.\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>사용자가 명령을 입력할 때마다 에이전트는 이 시스템 수준 명령을 알고, 사용자의 그리기 작업을 실행할 때 안정성 도구를 호출해야 한다는 것을 이해합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>예를 들어: 책을 펼쳐 들고 있는 소녀를 그려보세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/05ff829cf382e82c9ece2676032d2383.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"don%E2%80%99t-want-to-write-prompts%3F-of-course-you-can\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#don%E2%80%99t-want-to-write-prompts%3F-of-course-you-can\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#don%E2%80%99t-want-to-write-prompts%3F-of-course-you-can\"></a>프롬프트를 쓰고 싶지 않으세요? 물론 가능합니다!</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>지침의 오른쪽 상단에 있는&nbsp;<strong>생성을</strong>&nbsp;클릭하세요 .</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/426a416e468b9f495eb13ac2986acdca.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>\'지침\'</strong>&nbsp;에 요구 사항을 입력 하고&nbsp;<strong>\'생성\'을</strong>&nbsp;클릭하세요&nbsp;. 오른쪽에 생성된 프롬프트는 AI가 생성한 프롬프트입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/d750983264182e7af5014d5df4477e31.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>하지만 프롬프트에 대한 올바른 이해를 얻으려면 초기 단계에서는 이 기능에 의존해서는 안 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"publish\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#publish\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#publish\"></a>게시하다</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>오른쪽 상단 모서리에 있는 게시 버튼을 클릭하고 게시 후&nbsp;<strong>앱 실행을</strong>&nbsp;선택하면 온라인으로 실행되는 에이전트에 대한 웹 페이지를 얻을 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/38a1bf752ca1fc71eccbbfd18046f5bc.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>이 웹페이지의 URL을 복사하여 다른 친구들과 공유하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"question-1%3A-how-to-specify-the-style-of-generated-images%3F\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#question-1%3A-how-to-specify-the-style-of-generated-images%3F\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#question-1%3A-how-to-specify-the-style-of-generated-images%3F\"></a>질문 1: 생성된 이미지의 스타일을 어떻게 지정하나요?</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>사용자의 입력 명령에 스타일 지침을 추가할 수 있습니다. 예: 애니메이션 스타일, 책을 펼친 소녀를 그려보세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/d2d883d887272786ee19d97894cbb307.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>하지만 기본 스타일을 애니메이션 스타일로 설정하려면 시스템 프롬프트에 추가할 수 있습니다. 이전에 사용자 명령이 실행될 때마다 시스템 프롬프트가 알려지고 더 높은 우선순위를 갖는다는 것을 배웠기 때문입니다.복사AI에게 물어보세요</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>Draw the specified content according to the user\'s prompt using stability_text2image, the picture is in anime style.\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"question-2%3A-how-to-reject-certain-requests-from-some-users%3F\"><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#question-2%3A-how-to-reject-certain-requests-from-some-users%3F\">​</a><a href=\"https://docs.dify.ai/en/workshop/basic/build-ai-image-generation-app#question-2%3A-how-to-reject-certain-requests-from-some-users%3F\"></a>질문 2: 일부 사용자의 특정 요청을 거부하는 방법은 무엇입니까?</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>많은 비즈니스 시나리오에서 불합리한 콘텐츠를 출력하는 것을 피해야 하지만, LLM은 종종 \"멍청한\" 경우가 많아 출력 콘텐츠가 틀렸더라도 사용자의 지시를 아무런 의심 없이 따릅니다. 모델이 허위 콘텐츠를 조작하여 사용자에게 답변을 제공하려고 애쓰는 이러한 현상을&nbsp;<strong>모델 환각</strong>&nbsp;이라고 합니다 . 따라서 필요한 경우 모델이 사용자 요청을 거부해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>또한, 사용자는 사업과 관련 없는 내용을 질문할 수도 있으며, 이러한 요청을 에이전트가 거부해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>마크다운 형식을 사용하여 다양한 프롬프트를 분류할 수 있습니다. 에이전트가 불합리한 콘텐츠를 거부하도록 가르치는 프롬프트는 \"제약 조건\" 제목 아래에 작성하면 됩니다. 물론 이 형식은 표준화를 위한 것이며, 원하는 형식을 직접 만들 수도 있습니다.복사AI에게 물어보세요</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>## Task\nDraw the specified content according to the user\'s prompt using stability_text2image, the picture is in anime style.\n\n## Constraints\nIf the user requests content unrelated to drawing, reply: \"Sorry, I don\'t understand what you\'re saying.\"\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>예를 들어, 이렇게 물어보죠: 오늘 저녁은 뭐 먹지?</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/06dcf569989d797919fbe49ab8d5cadc.png\" alt=\"\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p>좀 더 공식적인 비즈니스 시나리오에서는 민감한 단어 라이브러리를 호출하여 사용자 요청을 거부할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>\'기능 추가 - 콘텐츠 관리\'</strong>&nbsp;에 \"저녁 식사\"라는 키워드를 추가하세요&nbsp;. 사용자가 키워드를 입력하면 Agent 앱에 \"죄송하지만 무슨 말씀인지 이해가 안 됩니다.\"라는 메시지가 표시됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:image -->\n<figure class=\"wp-block-image\"><img src=\"https://assets-docs.dify.ai/dify-enterprise-mintlify/en/workshop/basic/828b27d1a873ff7b4b44f76d93229225.png\" alt=\"\"/></figure>\n<!-- /wp:image -->','이미지 생성 앱 만드는 방법','','publish','open','closed','','%ec%9d%b4%eb%af%b8%ec%a7%80-%ec%83%9d%ec%84%b1-%ec%95%b1-%eb%a7%8c%eb%93%9c%eb%8a%94-%eb%b0%a9%eb%b2%95','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(26,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>Retrieval-Augmented Generation (RAG)은 대규모 언어 모델(LLM)의 한계를 보완하여 답변의 정확성과 신뢰도를 높이는 강력한 기술입니다. RAG의 정확도를 극대화하기 위한 방안은 크게 <strong>검색(Retrieval) 단계</strong>와 <strong>생성(Generation) 단계</strong>로 나누어 볼 수 있으며, 데이터 전처리부터 파이프라인 고도화까지 다각적인 접근이 필요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">1. 검색(Retrieval) 단계 정확도 향상 방안</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>검색 단계의 목표는 사용자의 질문에 가장 관련성 높은 정보를 외부 지식 소스에서 정확하게 찾아내는 것입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>1.1. 청킹 (Chunking) 전략 최적화</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>문서를 의미 있는 단위로 잘게 나누는 청킹은 검색 품질에 직접적인 영향을 미칩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>의미 기반 청킹 (Semantic Chunking):</strong> 문장의 의미나 주제의 변화를 감지하여 문서를 분할합니다. 이는 고정된 크기로 나누는 것보다 문맥을 더 잘 보존하여 관련성 높은 정보를 검색할 가능성을 높입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>계층적 청킹 (Hierarchical Chunking):</strong> 긴 문서를 요약본, 주요 내용, 세부 내용 등 계층적인 구조로 나누어, 질문의 종류에 따라 적절한 수준의 정보를 검색하도록 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>중복(Overlap) 설정:</strong> 청크 간의 내용이 일부 겹치도록 설정하여, 중요한 정보가 청크 경계에서 잘리는 것을 방지하고 문맥 연속성을 유지합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>1.2. 임베딩 모델 최적화</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>텍스트를 벡터로 변환하는 임베딩 모델의 성능은 검색 정확도의 핵심입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>도메인 특화 임베딩 모델 활용:</strong> 법률, 의료, 금융 등 특정 전문 분야의 데이터를 다룬다면, 해당 분야의 용어와 문맥을 잘 이해하는 도메인 특화 모델을 사용하는 것이 유리합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>임베딩 모델 미세조정 (Fine-tuning):</strong> 보유한 데이터셋에 맞게 사전 학습된 임베딩 모델을 추가로 학습시켜, 데이터의 특성을 더 잘 반영하는 벡터 표현을 생성할 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>1.3. 하이브리드 검색 (Hybrid Search)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>키워드 기반 검색과 의미 기반 검색의 장점을 결합하여 검색 성능을 높입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>키워드 검색 (Lexical Search):</strong> BM25와 같은 알고리즘을 사용하여 특정 키워드가 포함된 문서를 빠르게 찾아냅니다. 정확한 용어나 제품명을 검색할 때 효과적입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>의미 검색 (Semantic Search):</strong> 문장의 의미적 유사도를 기반으로 관련 문서를 찾습니다. 사용자의 질문 의도를 파악하여 검색하므로 더 유연하고 포괄적인 검색이 가능합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>이 두 가지 방식을 결합하면, 키워드의 정확성과 의미의 관련성을 모두 잡을 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>1.4. 재순위화 (Re-ranking)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>초기 검색 결과의 순위를 다시 매겨 정확도를 높이는 단계입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>초기 검색(예: 하이브리드 검색)을 통해 가져온 상위 N개의 문서들을 대상으로, 더 정교한 모델(Cross-encoder 등)을 사용하여 질문과의 관련성을 다시 평가하고 순위를 재조정합니다. 이를 통해 가장 관련성 높은 문서를 최종적으로 선택할 확률을 높일 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">2. 생성(Generation) 단계 정확도 향상 방안</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>검색된 정보를 바탕으로 LLM이 얼마나 정확하고 일관성 있는 답변을 생성하는지가 중요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>2.1. 프롬프트 엔지니어링 (Prompt Engineering)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>LLM에 전달하는 프롬프트의 구조와 내용을 정교하게 설계하여 답변의 품질을 제어합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>명확한 지시:</strong> LLM에게 역할을 부여하고, 검색된 정보를 어떻게 활용하여 답변을 생성해야 하는지 명확하고 구체적인 지침을 제공합니다. (예: \"당신은 OOO 전문가입니다. 다음 검색된 정보를 바탕으로 사용자의 질문에 한국어로 답변하세요.\")</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>구조화된 프롬프트:</strong> 질문, 검색된 컨텍스트, 답변 형식 등을 명확하게 구분하여 프롬프트에 포함시키면 LLM이 정보를 더 잘 이해하고 구조화된 답변을 생성하는 데 도움이 됩니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>2.2. LLM 미세조정 (Fine-tuning)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>특정 도메인이나 작업에 LLM을 최적화하여 답변의 스타일, 톤, 정확도를 향상시킵니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>RAG를 통해 검색된 정보와 그에 대한 이상적인 답변 쌍으로 구성된 데이터셋을 구축하여 LLM을 미세조정하면, 검색된 컨텍스트를 더욱 효과적으로 활용하여 답변을 생성하도록 만들 수 있습니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">3. 데이터 전처리 및 가공</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>\"Garbage in, garbage out\" 원칙은 RAG에도 동일하게 적용됩니다. 데이터의 품질은 RAG 시스템 전체의 정확도를 좌우합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>3.1. 고품질 데이터 확보:</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>신뢰할 수 있고 최신 정보가 포함된 데이터를 지식 소스로 사용해야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>3.2. 데이터 정제:</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>불필요한 정보, 중복 내용, 서식 오류 등을 제거하여 데이터의 일관성과 정확성을 높여야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">4. RAG 파이프라인 고도화</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>개별 구성 요소의 최적화를 넘어 파이프라인 전체를 개선하는 전략입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>4.1. 쿼리 변환 (Query Transformation)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>사용자의 초기 질문을 더 나은 검색 결과를 유도할 수 있는 형태로 변환합니다. 예를 들어, 복잡한 질문을 여러 개의 하위 질문으로 나누거나, 질문을 재구성하여 검색에 더 적합한 형태로 만들 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>4.2. 라우팅 (Routing)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>사용자의 질문 유형에 따라 최적의 처리 경로를 동적으로 결정합니다. 예를 들어, 간단한 정보성 질문은 요약된 문서를, 복잡한 분석 질문은 여러 세부 문서를 참조하도록 라우팅할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">5. 정확도 평가 및 지속적인 개선</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>RAG 시스템의 성능을 객관적으로 측정하고 개선 방향을 설정하는 것이 중요합니다. <code>Ragas</code>와 같은 평가 프레임워크를 사용하여 <strong>Faithfulness(충실성)</strong>, <strong>Answer Relevancy(답변 관련성)</strong>, <strong>Context Precision(컨텍스트 정확성)</strong>, <strong>Context Recall(컨텍스트 재현율)</strong> 등의 지표를 정량적으로 평가하고, 이를 바탕으로 시스템을 지속적으로 개선해 나가야 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','RAG의 정확도를 높이는 전략','','publish','open','closed','','rag%ec%9d%98-%ec%a0%95%ed%99%95%eb%8f%84%eb%a5%bc-%eb%86%92%ec%9d%b4%eb%8a%94-%ec%a0%84%eb%9e%b5','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(27,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>RAG (Retrieval-Augmented Generation) 시스템에서 표(table)와 그림(image)을 효과적으로 처리하려면, 텍스트와는 다른 접근 방식이 필요합니다. 이 두 가지 비정형 데이터를 LLM이 이해하고 활용할 수 있도록 변환하는 것이 핵심입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>표 (Table) 처리 방안 📊</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>표는 행과 열의 구조 속에 중요한 정보를 담고 있으므로, 이 구조를 유지하며 텍스트로 변환하는 것이 중요합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>HTML/Markdown 변환</strong>: 가장 간단하고 효과적인 방법 중 하나는 표를 <strong>HTML의 <code>&lt;table></code> 태그나 Markdown 형식으로 변환</strong>하는 것입니다. 이 방식은 표의 구조적 관계(행, 열)를 명확하게 표현해주어 LLM이 데이터의 맥락을 이해하는 데 도움을 줍니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>표를 문장으로 변환 (Table-to-Text)</strong>: 표의 각 행을 완전한 문장으로 설명하는 텍스트로 변환할 수 있습니다. 예를 들어, \"제품 A의 가격은 10,000원이고 재고는 100개입니다.\"와 같이 변환하면, 자연어 검색(Semantic Search) 시 검색 정확도를 높일 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>청킹(Chunking) 전략</strong>: 긴 표의 경우, <strong>행(row) 단위로 청킹</strong>하여 각 행이 독립적인 정보 단위가 되도록 하는 것이 효과적입니다. 이렇게 하면 사용자의 특정 질문과 관련된 행을 더 정확하게 검색할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>SQL/CSV 형식 활용</strong>: 만약 표 데이터가 데이터베이스에 저장되어 있다면, LLM이 <strong>자연어를 SQL 쿼리로 변환</strong>하여 직접 데이터베이스에서 정보를 조회하도록 하는 \'Text-to-SQL\' 방식을 적용할 수 있습니다. 이는 정형 데이터에 대한 가장 정확한 답변을 제공할 수 있는 강력한 방법입니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\"><strong>그림 (Image) 처리 방안 🖼️</strong></h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>그림을 처리하기 위해서는 시각 정보를 텍스트 정보로 변환하는 과정이 필수적입니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>이미지 캡셔닝 (Image Captioning)</strong>: 이미지의 내용을 설명하는 <strong>간결한 캡션(caption)을 생성</strong>하여 텍스트 정보로 활용합니다. 예를 들어, \"강아지가 공원에서 뛰어놀고 있다\"와 같은 캡션은 이미지의 핵심 내용을 요약하여 검색될 수 있도록 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>광학 문자 인식 (OCR, Optical Character Recognition)</strong>: 인포그래픽, 차트, 문서 스캔본처럼 이미지 내에 텍스트가 포함된 경우, <strong>OCR 기술을 사용해 텍스트를 추출</strong>해야 합니다. 추출된 텍스트는 일반 텍스트 데이터처럼 처리하여 검색 및 답변 생성에 활용할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>멀티모달 임베딩 (Multi-modal Embeddings)</strong>: 최신 접근 방식은 <strong>텍스트와 이미지를 모두 이해하는 멀티모달 모델</strong>을 사용하는 것입니다. <code>CLIP</code>과 같은 모델은 이미지와 텍스트를 동일한 벡터 공간에 임베딩하여, \"파란색 자동차 이미지\"라는 텍스트 쿼리만으로 실제 파란색 자동차 이미지를 검색할 수 있게 해줍니다. 이 방식은 RAG 시스템이 시각적 내용까지 직접 이해하고 검색할 수 있도록 하여 정확도를 크게 향상시킵니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>결론적으로, 표는 구조를 유지하며 텍스트화하는 것이 중요하고, 그림은 시각 정보를 캡션, OCR, 또는 멀티모달 임베딩을 통해 텍스트로 변환하여 RAG 파이프라인에 통합하는 것이 효과적입니다.</p>\n<!-- /wp:paragraph -->','RAG에서 표, 이미지 처리 방법','','publish','open','closed','','rag%ec%97%90%ec%84%9c-%ed%91%9c-%ec%9d%b4%eb%af%b8%ec%a7%80-%ec%b2%98%eb%a6%ac-%eb%b0%a9%eb%b2%95','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(28,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>weaviate.io의 블로그 게시물 (<a href=\"https://weaviate.io/blog/what-is-agentic-rag\">https://weaviate.io/blog/what-is-agentic-rag</a>) 내용을 바탕으로 <strong>Agentic RAG</strong>와 <strong>Naive RAG</strong>의 차이점을 중점적으로 요약</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Agentic RAG vs. Naive RAG</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Agentic RAG와 기존의 Naive RAG의 가장 큰 차이점은 <strong>자율적인 의사결정과 도구 사용 능력</strong>에 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>일반 RAG (기존 RAG)</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>단순 검색 및 생성:</strong> 사용자의 질문을 받으면 미리 구축된 데이터베이스에서 관련 정보를 찾아(Retrieve) 답변을 생성(Generate)하는 단순한 2단계 프로세스를 따릅니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>제한된 정보 소스:</strong> 일반적으로 단일 데이터 소스에 의존하며, 한 번의 검색 과정만을 거칩니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>수동적 프로세스:</strong> 주어진 질문에 대해 최적의 답변을 찾기 위한 추가적인 분석이나 검증 과정이 없습니다. 검색된 정보의 품질을 스스로 평가하거나, 정보가 부족할 경우 추가적인 검색을 수행하지 못합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":1986,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"https://rndpolicy.org/future/wp-content/uploads/2025/07/IMG_4080-1024x512.png\" alt=\"\" class=\"wp-image-1986\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Agentic RAG (에이전틱 RAG) 🧠</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Agentic RAG는 AI 에이전트(Agent)를 도입하여 RAG 파이프라인을 훨씬 더 동적이고 지능적으로 만듭니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>자율적 의사결정 및 다단계 추론:</strong> 에이전트는 질문을 분석하고, <strong>어떤 정보를 검색할지, 어떤 도구를 사용할지, 심지어는 검색 쿼리를 어떻게 더 효과적으로 만들지 스스로 결정</strong>합니다. 예를 들어, 초기 검색 결과가 불충분하다고 판단되면 스스로 다른 검색어를 사용하여 추가 정보를 탐색합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>외부 도구 및 API 활용:</strong> 가장 큰 차이점 중 하나로, Agentic RAG는 단순한 벡터 데이터베이스 검색을 넘어 <strong>웹 검색, 코드 실행, 계산기 등 다양한 외부 도구와 API를 활용</strong>할 수 있습니다. 이를 통해 훨씬 더 폭넓고 정확한 정보를 수집하여 답변에 활용합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>정보 검증 및 평가:</strong> 검색된 정보의 <strong>신뢰도를 스스로 검증하고 평가</strong>합니다. 여러 소스에서 얻은 정보를 비교하거나, 상충되는 내용을 확인하여 더 정확하고 신뢰성 높은 답변을 생성합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:image {\"id\":1987,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"https://rndpolicy.org/future/wp-content/uploads/2025/07/IMG_4079-1024x512.png\" alt=\"\" class=\"wp-image-1987\"/></figure>\n<!-- /wp:image -->\n\n<!-- wp:paragraph -->\n<p><strong>핵심 차이점 요약</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>기능</td><td>Naive RAG</td><td>Agentic RAG</td></tr><tr><td><strong>사고 과정</strong></td><td>단일 단계 (검색 → 생성)</td><td>다단계 추론 및 계획</td></tr><tr><td><strong>정보 소스</strong></td><td>제한적 (주로 단일 DB)</td><td>다양함 (DB, 웹, API 등)</td></tr><tr><td><strong>도구 사용</strong></td><td>❌ 불가능</td><td>✅ 가능</td></tr><tr><td><strong>정보 검증</strong></td><td>❌ 불가능</td><td>✅ 가능</td></tr><tr><td><strong>유연성</strong></td><td>낮음</td><td>높음</td></tr></tbody></table></figure>\n<!-- /wp:table -->\n\n<!-- wp:paragraph -->\n<p>결론적으로, Naive RAG가 정해진 길을 따라가는 자동차라면, <strong>Agentic RAG는 스스로 최적의 경로를 탐색하고, 필요하면 다른 교통수단(도구)까지 활용하는 똑똑한 운전자</strong>에 비유할 수 있습니다. 이러한 능력 덕분에 Agentic RAG는 훨씬 더 복잡하고 동적인 문제 해결에 강점을 보입니다.</p>\n<!-- /wp:paragraph -->','에이전틱 RAG와 일반 RAG의 차이','','publish','open','closed','','%ec%97%90%ec%9d%b4%ec%a0%84%ed%8b%b1-rag%ec%99%80-%ec%9d%bc%eb%b0%98-rag%ec%9d%98-%ec%b0%a8%ec%9d%b4','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(29,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">모델 컨텍스트 프로토콜(MCP): AI와 세상의 소통을 위한 표준 규약</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>모델 컨텍스트 프로토콜(Model Context Protocol, MCP)</strong>은 거대 언어 모델(LLM)과 같은 인공지능(AI)이 외부 데이터 소스나 도구, 시스템과 상호작용하는 방식을 표준화한 개방형 프로토콜입니다. 쉽게 말해, AI가 자신의 학습 데이터에만 의존하는 것을 넘어, 실시간 정보에 접근하고 외부 도구를 활용하여 더 똑똑하고 유용한 작업을 수행할 수 있도록 만들어주는 \'만능 연결 플러그\'와 같습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>기존에는 AI 모델을 특정 데이터베이스나 API에 연결하려면 각각의 시스템에 맞춰 별도의 맞춤형 통합 작업을 해야 했습니다. 이는 개발 과정을 복잡하게 만들고 확장성을 저해하는 요인이었습니다. MCP는 이러한 문제를 해결하기 위해 AI와 외부 시스템 간의 \'공통 언어\'를 제시합니다. 개발자들은 MCP라는 표준 규격에 맞춰 한 번만 시스템을 구축하면, 다양한 AI 모델 및 애플리케이션과 손쉽게 연동할 수 있게 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">MCP의 작동 방식: 클라이언트와 서버</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>MCP는 기본적으로 <strong>클라이언트-서버</strong> 구조로 작동합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>호스트(Host) 및 클라이언트(Client):</strong> 사용자가 직접 상호작용하는 AI 애플리케이션(예: AI 챗봇, 코딩 어시스턴트)입니다. 호스트는 내부에 MCP 클라이언트를 두어, 필요한 작업을 MCP 서버에 요청하고 응답을 받아 사용자에게 전달하는 역할을 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>서버(Server):</strong> 외부 데이터 소스나 도구(API, 데이터베이스, 파일 시스템 등)를 감싸고 있는 \'래퍼(wrapper)\'입니다. 클라이언트로부터 요청을 받으면, 해당 시스템과 통신하여 결과를 얻어 다시 클라이언트에게 전달합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이러한 구조 덕분에 AI 애플리케이션은 특정 시스템의 복잡한 내부 구조를 알 필요 없이, 표준화된 MCP 형식에 맞춰 요청만 보내면 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:separator -->\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"/>\n<!-- /wp:separator -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">구체적인 사용 예시</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>MCP는 다양한 분야에서 AI의 능력을 확장하는 데 활용될 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\">1. AI 코딩 어시스턴트 💻</h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>개발자가 코드를 작성할 때, AI 어시스턴트가 실시간으로 도움을 주는 상황을 생각해볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>상황:</strong> 개발자가 \"현재 프로젝트의 <code>main</code> 브랜치에서 가장 최근에 커밋된 5개의 내용을 요약해 줘\"라고 AI 어시스턴트에게 요청합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>MCP 작동 방식:</strong><!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>AI 어시스턴트(호스트/클라이언트)는 이 요청을 MCP 형식으로 변환합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>로컬 또는 원격에 있는 <strong>Git용 MCP 서버</strong>에 이 요청을 전달합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Git MCP 서버는 실제로 <code>git log -n 5</code>와 같은 명령을 실행하여 최신 커밋 기록을 가져옵니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>가져온 결과를 다시 MCP 형식으로 클라이언트에 전달합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>AI 어시스턴트는 이 정보를 바탕으로 자연스러운 문장으로 요약하여 개발자에게 보여줍니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 과정에서 AI 어시스턴트는 Git 명령어 자체를 알 필요가 없으며, 단지 MCP를 통해 \"최신 커밋 정보를 달라\"는 표준 요청만 보내면 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\">2. AI 기반 일정 관리 비서 📅</h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>개인 비서처럼 나의 일정을 관리해주는 AI를 상상해볼 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>상황:</strong> 사용자가 AI 비서에게 \"내일 오후 2시에 \'주간 회의\' 일정을 추가해 줘\"라고 말합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>MCP 작동 방식:</strong><!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>AI 비서 앱(호스트/클라이언트)은 사용자의 말을 해석하여 일정 추가 요청으로 인지합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>이 요청을 <strong>Google 캘린더 또는 Outlook 캘린더용 MCP 서버</strong>에 전달합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>MCP 서버는 해당 캘린더 서비스의 API를 호출하여 새로운 일정을 등록합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>일정 등록이 성공적으로 완료되면, 서버는 성공 메시지를 클라이언트에 보냅니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>AI 비서는 사용자에게 \"네, 내일 오후 2시에 \'주간 회의\' 일정을 추가했습니다.\"라고 최종적으로 알려줍니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\">3. 데이터베이스 전문가 AI 📊</h4>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>복잡한 데이터베이스 쿼리 없이 자연어로 데이터를 요청하고 분석할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>상황:</strong> 마케팅 담당자가 \"지난달 가장 많이 팔린 제품 상위 3개와 각각의 매출액을 알려줘\"라고 AI에게 질문합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>MCP 작동 방식:</strong><!-- wp:list {\"ordered\":true,\"start\":1} -->\n<ol start=\"1\" class=\"wp-block-list\"><!-- wp:list-item -->\n<li>BI(Business Intelligence) 툴에 내장된 AI(호스트/클라이언트)가 질문을 분석합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>회사의 <strong>PostgreSQL 또는 MySQL 데이터베이스용 MCP 서버</strong>에 데이터 요청을 보냅니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>MCP 서버는 이 요청을 실제 SQL 쿼리로 변환하여 데이터베이스에서 실행합니다. (<code>SELECT product_name, SUM(sales) FROM orders WHERE order_date &gt;= \'2025-06-01\' AND order_date &lt; \'2025-07-01\' GROUP BY product_name ORDER BY SUM(sales) DESC LIMIT 3;</code> 과 같이)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>쿼리 결과를 다시 MCP를 통해 클라이언트에게 전달합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>AI는 이 데이터를 기반으로 표나 차트를 만들어 사용자에게 시각적으로 보여줍니다.</li>\n<!-- /wp:list-item --></ol>\n<!-- /wp:list --></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이처럼 MCP는 AI가 단순히 정보를 검색하고 생성하는 것을 넘어, **실질적인 행동(Action)**을 취하고 <strong>외부 세계와 능동적으로 소통</strong>할 수 있도록 만드는 핵심 기술이라고 할 수 있습니다. 이를 통해 개발자는 더욱 강력하고 지능적인 AI 애플리케이션을 효율적으로 만들 수 있게 됩니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https://github.com/aaddrick/claude-desktop-debian/releases\">https://github.com/aaddrick/claude-desktop-debian/releases</a></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>sudo dpkg -i claude-desktop_0.11.4_amd64.deb</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>sudo apt --fix-broken install</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->','Model Context Protocol은 무엇인가?','','publish','open','closed','','model-context-protocol%ec%9d%80-%eb%ac%b4%ec%97%87%ec%9d%b8%ea%b0%80','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(30,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>MCP(모델 컨텍스트 프로토콜) 생태계는 빠르게 성장하고 있으며, 다양한 기업과 커뮤니티에서 AI의 능력을 확장하는 서버들을 개발하여 제공하고 있습니다. 이러한 MCP 서버들은 특정 기능에 초점을 맞춰 AI가 개발, 데이터 관리, 생산성 향상 등 다양한 작업을 수행할 수 있도록 돕습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>주요 MCP 서버 제공 사이트 및 프로젝트는 다음과 같이 분류할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">1. 공식 및 주요 허브 사이트 (서버 목록 제공)</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>이 사이트들은 다양한 MCP 서버들을 모아서 보여주는 허브 역할을 합니다. 개발자들은 이곳에서 필요한 서버를 찾거나 자신이 만든 서버를 공유할 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Model Context Protocol 공식 GitHub (<code>github.com/modelcontextprotocol/servers</code>):</strong> Anthropic이 직접 관리하는 공식 저장소로, 파일 시스템, Git, 데이터베이스 등 기본적인 기능의 레퍼런스 서버들을 제공하며, SDK를 통해 자신만의 서버를 구축하는 방법을 안내합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>MCP Market (<code>mcpmarket.com</code>):</strong> 다양한 개발자들이 만든 MCP 서버들을 한눈에 볼 수 있는 마켓플레이스 형태의 사이트입니다. 인기 순위, 최신 순위, 카테고리별로 서버를 쉽게 찾아볼 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Awesome MCP Servers (<code>mcpservers.org</code> 또는 GitHub <code>wong2/awesome-mcp-servers</code>):</strong> 커뮤니티에서 직접 큐레이션한 유용한 MCP 서버 목록입니다. 잘 알려지지 않은 유용한 서버들을 발견하기 좋습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Cursor Directory (<code>cursor.directory/mcp</code>):</strong> AI 기반 코드 에디터인 Cursor에서 사용할 수 있는 MCP 서버들을 모아놓은 디렉토리입니다. 개발 생산성 향상에 초점을 맞춘 서버들이 많습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Smithery</strong> (<code>smithery.ai</code>) : 인공지능(AI) 에이전트가 외부 세계의 도구 및 서비스와 상호작용할 수 있도록 돕는 중앙 허브 플랫폼입니다. 다양한 MCP 서버들을 발견하고, 배포하며, 관리할 수 있는 일종의 \'마켓플레이스\' 또는 \'게이트웨이\' 역할을 합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">2. 분야별 주요 MCP 서버 제공 사례</h3>\n<!-- /wp:heading -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>개발 도구 (Development Tools)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>GitHub:</strong> GitHub 저장소 관리, 파일 작업, API 통합 등의 기능을 제공하는 서버입니다. AI가 코드 리뷰, 이슈 관리 등을 자동으로 처리할 수 있게 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>GitLab:</strong> GitLab API와 연동하여 프로젝트 관리를 자동화합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Playwright:</strong> 브라우저 자동화 및 웹 스크래핑 기능을 제공하여 AI가 웹사이트와 상호작용할 수 있게 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Run Python:</strong> 격리된 환경에서 안전하게 파이썬 코드를 실행할 수 있는 서버로, AI가 데이터 분석이나 간단한 스크립팅 작업을 수행할 수 있습니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Sentry:</strong> 에러 추적 플랫폼인 Sentry의 이슈를 가져오고 분석하는 기능을 제공합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>데이터 및 파일 시스템 (Data &amp; File Systems)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Filesystem:</strong> 로컬 파일 시스템에 접근하여 파일을 읽고, 쓰고, 검색하는 등의 작업을 수행합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>PostgreSQL / SQLite:</strong> 데이터베이스에 직접 접근하여 스키마를 확인하거나 읽기 전용 쿼리를 실행할 수 있게 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Google Drive:</strong> 구글 드라이브 내의 파일을 검색하고 접근하는 기능을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Redis:</strong> Redis 키-값 저장소와 상호작용하는 기능을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Bright Data:</strong> 웹 데이터 수집 플랫폼으로, AI 에이전트가 실시간 웹 데이터에 접근하고 수집할 수 있도록 지원합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>생산성 및 커뮤니케이션 (Productivity &amp; Communication)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Notion:</strong> AI가 Notion의 노트, 할 일 목록, 데이터베이스를 관리할 수 있게 합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Slack:</strong> 슬랙 채널 관리 및 메시지 전송 기능을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>WhatsApp:</strong> 왓츠앱 메시지를 보내고 관리하는 기능을 제공합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Google Maps:</strong> 위치 서비스, 길 찾기, 장소 정보 등의 기능을 AI가 활용할 수 있게 합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading {\"level\":4} -->\n<h4 class=\"wp-block-heading\"><strong>AI 및 특수 도구 (AI &amp; Specialized Tools)</strong></h4>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>ElevenLabs:</strong> 텍스트를 음성으로 변환(TTS)하는 기능을 제공하는 서버입니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>EverArt:</strong> 다양한 모델을 사용하여 AI 이미지를 생성합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>AWS KB Retrieval:</strong> AWS Bedrock 에이전트 런타임을 사용하여 AWS 지식 베이스에서 정보를 검색합니다.</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>이 외에도 수많은 커뮤니티 기반 서버들이 계속해서 개발되고 있으며, <code>mcp.so</code>, <code>glama.ai</code>와 같은 사이트에서도 새로운 서버들을 찾아볼 수 있습니다. 이처럼 MCP 생태계는 AI가 단순히 똑똑한 두뇌를 넘어, 실제로 다양한 도구를 활용하여 실질적인 작업을 수행하는 \'손과 발\'을 가질 수 있도록 진화하고 있습니다.</p>\n<!-- /wp:paragraph -->','MCP 서버를 제공하는 사이트들','','publish','open','closed','','mcp-%ec%84%9c%eb%b2%84%eb%a5%bc-%ec%a0%9c%ea%b3%b5%ed%95%98%eb%8a%94-%ec%82%ac%ec%9d%b4%ed%8a%b8%eb%93%a4','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
(31,1,'2025-10-13 13:41:17','2025-10-13 04:41:17','<!-- wp:paragraph -->\n<p>AI를 사용하여 로컬 문서 MCP 서버를 배포하고 문서와 채팅하는 방법을 알아보세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>모델 컨텍스트 프로토콜(MCP)은 Anthropic에서 개발한 개방형 표준입니다. AI 모델이 외부 도구 및 데이터 소스와 상호 작용할 수 있도록 표준화된 인터페이스를 제공합니다. AI 모델은 이 프로토콜을 통해 소프트웨어 도구 및 데이터에 접근할 수 있습니다.<a href=\"https://github.com/langgenius/dify-docs\" target=\"_blank\" rel=\"noreferrer noopener\">이 가이드에서는 dify-docs 저장소를</a>&nbsp;사용하여 로컬 MCP 서버를 배포하는 방법을 보여줍니다&nbsp;. 이를 통해 LLM과 문서 간의 자연스러운 소통이 가능해집니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>작동 원리</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code><strong>1. 질문 분석</strong> : AI는 질문을 받고 관련된 개념과 기술적 세부 사항을 분석합니다. Dify 문서를 참조해야 할지 여부를 결정합니다.\n<strong>2. 검색 키워드 생성</strong> : AI가 기존 지식만으로는 답변을 얻을 수 없고 문서를 참조해야 할 경우, 자동으로 검색 키워드와 쿼리 전략을 생성합니다. \"OpenAI GPT-4 모델을 Dify에 통합하는 방법\"의 경우, AI는 \"모델 구성\", \"API 통합\", \"GPT-4 설정\"을 검색합니다.\n<strong>3. 문서 콘텐츠 검색</strong> : MCP 서버는 이러한 쿼리를 수신하고 Dify의 문서 라이브러리를 검색하여 가장 관련성이 높은 콘텐츠를 반환합니다.\n<strong>4. 통합 및 답변 생성</strong> : AI는 검색된 정보를 정리하여 정확하고 자세한 답변을 생성합니다.\n<strong>5. 다중 라운드 검색 최적화</strong> : 초기 검색에서 충분한 정보가 제공되지 않으면 AI는 검색 전략을 개선하고 포괄적인 답변을 얻을 때까지 추가 쿼리를 수행합니다.</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"prerequisites\"><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#prerequisites\">​</a><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#prerequisites\"></a>필수 조건</h2>\n<!-- /wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Node ≥ 16.0</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Git</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>MCP 클라이언트(예: Claude Desktop, VS Code 등)</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"installation-steps\"><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#installation-steps\">​</a><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#installation-steps\"></a>설치 단계</h2>\n<!-- /wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"1-clone-repository\"><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#1-clone-repository\">​</a><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#1-clone-repository\"></a>1. 복제 저장소</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Dify 문서 저장소를 로컬로 복제합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>git clone https://github.com/langgenius/dify-docs.git\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>이 저장소는 MCP 서버의 데이터 소스 역할을 합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"2-initialize-mcp-server\"><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#2-initialize-mcp-server\">​</a><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#2-initialize-mcp-server\"></a>2. MCP 서버 초기화</h3>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>문서 디렉토리로 이동하여 MCP 서버를 설치하세요.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>cd dify-docs\nnpx mint-mcp add dify-6c0370d8\n</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>이 명령은 다음 작업을 수행합니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>로컬 MCP 서버 인스턴스를 생성합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>문서 콘텐츠를 분석하고 색인합니다.</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>필요한 종속성을 구성합니다</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>설치하는 데는 네트워크 연결 상태에 따라 몇 분 정도 걸립니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\" id=\"3-configure-mcp-server\"><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#3-configure-mcp-server\">​</a><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#3-configure-mcp-server\"></a>3. MCP 서버 구성</h3>\n<!-- /wp:heading -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><!-- wp:paragraph -->\n<p><strong>MCP 클라이언트와 서버 관계:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>MCP 서버는 지식과 도구를 제공합니다. 쿼리 요청을 처리하고, 데이터 리소스를 관리하고, 기능을 실행합니다. 클라이언트는 사용자 인터페이스(일반적으로 AI 애플리케이션이나 채팅 도구)입니다. 클라이언트는 사용자 질문을 받고, MCP 서버로 쿼리를 전달하고, 통합된 응답을 반환합니다.</p>\n<!-- /wp:paragraph --></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:paragraph -->\n<p>설치 과정에서 MCP 클라이언트를 선택합니다.&nbsp;<strong>Claude Desktop을 예로 들면</strong>&nbsp;, 도구가 해당 구성 정보를 생성합니다.<img src=\"https://assets-docs.dify.ai/2025/05/722c689b1c27d86c183c09dfda7a6a39.png\" alt=\"\"></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>설치가 완료되면 Claude Desktop 설정에서 MCP 서버를 추가하세요.&nbsp;</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>리눅스용 Claude Desktop 설치방법: <a href=\"https://github.com/aaddrick/claude-desktop-debian\" target=\"_blank\" rel=\"noreferrer noopener\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">https://github.com/aaddrick/claude-desktop-debian</mark></a></li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>또는 다음 사이트에서 다운로드하여 설치할 수 있음 : <a href=\"https://github.com/aaddrick/claude-desktop-debian/releases\" target=\"_blank\" rel=\"noreferrer noopener\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">https://github.com/aaddrick/claude-desktop-debian/releases</mark></a></li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>설정</strong>&nbsp;으로 이동하여 MCP 서버 구성 섹션에 서버 주소와 포트를 추가하고 구성을 저장한 후 애플리케이션을 다시 시작하세요.<img src=\"https://assets-docs.dify.ai/2025/05/a332247103fb9a7dcf5b1a891979ce86.png\" alt=\"\"></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"conversing-with-documentation\"><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#conversing-with-documentation\">​</a><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#conversing-with-documentation\"></a>문서와 대화하기</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p>설정이 완료되면 Dify 문서와 소통할 수 있습니다. 자연어 쿼리를 지원하므로 페이지별로 검색하거나 키워드를 정확하게 일치시킬 필요가 없습니다. 영어로 질문하면 영어로 답변하고, 한글로 질문하면 한글로 답변합니다. </p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>예를 들어, \"고객 서비스 챗봇을 만들고 싶은데 Workflow와 Chatflow 중 어떤 것을 선택해야 할까요?\"라고 질문해 보세요. 시스템은 두 옵션의 차이점을 설명하고 고객 서비스 시나리오에 대한 권장 사항을 제공합니다.<img src=\"https://assets-docs.dify.ai/2025/05/10d6a23693e894b2cbac85946eb22da5.png\" alt=\"\"></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>한글  답변</strong> :</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><!-- wp:paragraph -->\n<p>고객 서비스 챗봇을 만들 때는&nbsp;<strong>Chatflow</strong>를 선택하는 것이 좋습니다. 그 이유는 다음과 같습니다:</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Chatflow가 고객 서비스에 적합한 이유</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>1. 대화형 시나리오 전용 설계</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Chatflow는 고객 서비스, 의미적 검색 등 대화형 애플리케이션을 위해 특별히 설계되었습니다</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>응답 구성에서 다단계 로직이 필요한 대화형 애플리케이션에 최적화되어 있습니다</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>2. 고객 서비스 필수 기능 제공</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>대화 기록(Memory)</strong>: 이전 대화 내용을 기억하여 맥락 있는 대화 가능</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>질문 이해 노드</strong>: 자연어 입력에서 사용자 의도 인식의 복잡성을 해결</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>주석 답변</strong>: 더 정확하고 맞춤형 답변 제공</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Answer 노드</strong>: 체계적인 답변 구조 제공</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>3. 고객 서비스 특화 장점</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>고객의 복잡한 문의를 단계별로 처리 가능</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>이전 대화 맥락을 유지하면서 연속적인 대화 진행</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>고객 의도를 정확히 파악하여 적절한 답변 제공</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Workflow vs Chatflow 비교</h2>\n<!-- /wp:heading -->\n\n<!-- wp:paragraph -->\n<p><strong>Workflow는 다음 용도에 적합:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>자동화 및 일괄 처리 시나리오</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>고품질 번역, 데이터 분석, 콘텐츠 생성, 이메일 자동화</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>복잡한 비즈니스 로직 처리 (코드 노드, IF/ELSE 노드, 템플릿 변환 등)</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>예약 및 이벤트 트리거 작업</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p><strong>Chatflow는 다음 용도에 적합:</strong></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>고객 서비스 챗봇 ✅</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>대화형 검색</li>\n<!-- /wp:list-item -->\n\n<!-- wp:list-item -->\n<li>다단계 대화가 필요한 애플리케이션</li>\n<!-- /wp:list-item --></ul>\n<!-- /wp:list -->\n\n<!-- wp:paragraph -->\n<p>따라서 고객 서비스 챗봇을 구축하려면&nbsp;<strong>Chatflow</strong>를 선택하여 대화 기록 유지, 맥락 이해, 연속적인 고객 응대가 가능한 시스템을 만드시기 바랍니다.</p>\n<!-- /wp:paragraph --></blockquote>\n<!-- /wp:quote -->\n\n<!-- wp:paragraph -->\n<p></p>\n<!-- /wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>\"Dify 포트 번호를 어떻게 수정합니까?\"와 같은 기술적인 질문에 대해 AI는 다음과 같은 구체적인 단계를 제공합니다.<img src=\"https://assets-docs.dify.ai/2025/05/e83881dbe69ea135760c4e04f6a7ce98.png\" alt=\"\">MCP 방식을 사용하면 문제를 자연어로 설명할 수 있습니다. 특정 기술 용어에 대해 잘 모르더라도 원하는 바를 설명하고 관련 정보를 얻을 수 있습니다.</p>\n<!-- /wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\" id=\"comparison-with-rag-methods\"><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#comparison-with-rag-methods\">​</a><a href=\"https://docs.dify.ai/en/learn-more/extended-reading/dify-docs-mcp#comparison-with-rag-methods\"></a>RAG 방법과의 비교</h2>\n<!-- /wp:heading -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>특징</th><th>RAG(검색 증강 생성)</th><th>MCP(모델 컨텍스트 프로토콜)</th></tr></thead><tbody><tr><td>원칙</td><td>문서를 텍스트 청크로 분할하고 벡터 임베딩을 사용하여 색인을 구축합니다. 사용자가 질문을 하면 시스템은 질문과 텍스트 청크 간의 유사도를 계산한 후, 관련 청크를 선택하여 답변을 생성합니다.</td><td>AI는 질문 요구사항을 기반으로 능동적으로 질의 전략을 생성합니다. 여러 라운드의 대화형 질의를 지원하고 초기 결과에 따라 후속 검색을 조정합니다.</td></tr><tr><td>장점</td><td>빠른 처리 속도로 대규모 정적 문서에 적합합니다.</td><td>- 전체 문서 콘텐츠에 액세스할 수 있으며, 한 챕터 전체 걸친 복잡한 쿼리를 지원합니다.<br>- 문서 업데이트 후 복잡한 재처리가 필요 없으며 MCP 서비스를 간단히 재생성합니다.<br>- 일관되고 완전한 답변을 제공합니다.</td></tr><tr><td>제한 사항</td><td>- 정적 문서 분할은 관련 정보를 조각낼 수 있습니다.<br>- 벡터 유사성 기반 검색은 의미적으로 관련되지만 어휘적으로 다른 콘텐츠를 놓칠 수 있습니다.<br>- 컨텍스트 창 제한 <br>- 특정 chnks에 따라서만 답변을 생성합니다.</td><td>- 상당한 토큰 소모와 더 높은 비용이 필요합니다<br>- LLM의 쿼리 전략 생성 기능에 의존하며 검색 정확도에 영향을 미칠 수 있습니다.<br>- 여러 라운드의 대화형 쿼리로 인해 응답 시간이 길어질 수 있습니다.<br>- 추가 MCP 서버 배포 및 유지 관리 비용이 필요합니다.</td></tr></tbody></table></figure>\n<!-- /wp:table -->','Dify Docs MCP 서비스 배포 및 문서와 채팅','','publish','open','closed','','dify-docs-mcp-%ec%84%9c%eb%b9%84%ec%8a%a4-%eb%b0%b0%ed%8f%ac-%eb%b0%8f-%eb%ac%b8%ec%84%9c%ec%99%80-%ec%b1%84%ed%8c%85','','','2025-10-13 13:41:17','2025-10-13 04:41:17','',0,'http://kbsi',0,'docs','',0),
