Skip to content

Instantly share code, notes, and snippets.

@anpigon
Last active October 4, 2024 03:12
Show Gist options
  • Save anpigon/e2edfa496f428b86fceb981eba9e67fc to your computer and use it in GitHub Desktop.
Save anpigon/e2edfa496f428b86fceb981eba9e67fc to your computer and use it in GitHub Desktop.
RAG
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 환경설정"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from dotenv import load_dotenv\n",
"\n",
"load_dotenv()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LangSmith 추적을 시작합니다.\n",
"[프로젝트명]\n",
"obsidian-rag\n"
]
}
],
"source": [
"from langchain_teddynote import logging\n",
"\n",
"logging.langsmith(\"obsidian-rag\", set_enable=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 문서 로더"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# loader docs\n",
"from document_loaders.obsidian import MyObsidianLoader\n",
"\n",
"docs_path = \"./obsidian-help/ko\"\n",
"loader = MyObsidianLoader(docs_path, encoding=\"utf-8\", collect_metadata=True)\n",
"documents = loader.load()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"129\n"
]
}
],
"source": [
"print(len(documents))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 임베딩 모델"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/anpigon/Library/Caches/pypoetry/virtualenvs/obsidian-rag-FsuvQ4pV-py3.11/lib/python3.11/site-packages/sentence_transformers/cross_encoder/CrossEncoder.py:13: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from tqdm.autonotebook import tqdm, trange\n"
]
}
],
"source": [
"# embedding\n",
"from langchain_huggingface import HuggingFaceEmbeddings\n",
"\n",
"model_name = \"BAAI/bge-m3\"\n",
"model_kwargs = {'device': 'mps'}\n",
"encode_kwargs = {'normalize_embeddings': False}\n",
"embeddings = HuggingFaceEmbeddings(\n",
" model_name=model_name,\n",
" model_kwargs=model_kwargs,\n",
" encode_kwargs=encode_kwargs\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 문서 분할\n",
"\n",
"시멘틱 청크"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"page_content='# 옵시디언 도움말\n",
"\n",
"공식 Obsidian 도움말 사이트에 오신 것을 환영합니다. 여기에서 [Obsidian](https://obsidian.md/) 사용 팁 및 가이드를 찾을 수 있습니다. API 문서는 [Obsidian 개발자 문서](https://docs.obsidian.md/)에서 확인하실 수 있습니다. 다음 언어로도 이 사이트를 둘러보실 수 있습니다:\n",
"\n",
"<select class=\"dropdown select-location\">\n",
"<option value=\"\">English</option>\n",
"<option value=\"https://publish.obsidian.md/help-ar\">العربية</option>\n",
"<option value=\"https://publish.obsidian.md/help-da\">Dansk</option>\n",
"<option value=\"https://publish.obsidian.md/help-es\">Español</option>\n",
"<option value=\"https://publish.obsidian.md/help-it\">Italiano</option>\n",
"<option value=\"https://publish.obsidian.md/help-ja\">日本語</option>\n",
"<option value=\"https://publish.obsidian.md/help-km\">Phéasa Khmêr</option>\n",
"<option value=\"https://publish.obsidian.md/help-ko\">한국어</option>\n",
"<option value=\"https://publish.obsidian.md/help-pt-br\">Português</option>\n",
"<option value=\"https://publish.obsidian.md/help-ru\">Русский</option>\n",
"<option value=\"https://publish.obsidian.md/help-vi\">Tiếng Việt</option>\n",
"<option value=\"https://publish.obsidian.md/help-zh\">中文</option>\n",
"</select>\n",
"\n",
"## 시작하기\n",
"\n",
"만약 Obsidian을 처음 사용하신다면, 저희 가이드를 통해 Obsidian을 이용한 기본적인 노트 작성 방법을 배워보세요:\n",
"\n",
"1. [[Obsidian 다운로드 및 설치|다운로드 및 Obsidian 설치]]\n",
"2.' metadata={'source': '홈.md', 'path': 'obsidian-help/ko/홈.md', 'created': 1727746136.5413582, 'last_modified': 1727746136.5413582, 'last_accessed': 1727746143.6017084, 'aliases': \"['Start here', 'Obsidian/Index']\", 'cssclasses': \"['list-cards', 'hide-title']\"}\n",
"367\n"
]
}
],
"source": [
"# text_splitter\n",
"from langchain_experimental.text_splitter import SemanticChunker\n",
"\n",
"text_splitter = SemanticChunker(embeddings)\n",
"\n",
"splitted_docs = text_splitter.split_documents(documents)\n",
"print(splitted_docs[0])\n",
"print(len(splitted_docs))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 벡터스토어\n",
"\n",
"임베딩 인덱싱"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# vector_store\n",
"import faiss\n",
"from langchain_community.docstore.in_memory import InMemoryDocstore\n",
"from langchain_community.vectorstores import FAISS\n",
"\n",
"index = faiss.IndexFlatL2(len(embeddings.embed_query(\"hello world\")))\n",
"\n",
"vector_store = FAISS(\n",
" embedding_function=embeddings,\n",
" index=index,\n",
" docstore=InMemoryDocstore(),\n",
" index_to_docstore_id={},\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['f2ddda56-74ee-420b-8f7a-4f9bef89ca99',\n",
" 'b1f5f5ee-9b22-4027-aa82-eb64484af204',\n",
" '1b644b10-6bfa-48ce-b213-3cf63b02a84e',\n",
" '41bf2a5e-de81-43a8-8365-d11b254450a7',\n",
" 'b2d33808-a075-4728-a2fd-9f6baf38e2e4',\n",
" '55d0def8-594c-40bc-a0b5-8a28e47c9a30',\n",
" '886c3120-a4fb-4bd3-a37e-2e485d954efa',\n",
" '6b97a7e8-1873-4fcf-816a-140c1d9fed2c',\n",
" 'fbecd1e9-9a82-44d5-b157-66f725fd38c3',\n",
" '3cf5eec5-3b2d-4c7d-b8a8-1ad4cb24ac9d',\n",
" '4f6a49a9-e5a4-4363-b98e-171cc5a8b7b7',\n",
" '9c89dab2-2be0-4025-a9cf-4a490e4d577a',\n",
" 'a752c2dc-165e-43c7-85d6-99f7f2f548ac',\n",
" '21ef59cb-4dbd-4e0f-bfcd-7362971588dd',\n",
" '8fb73dea-347e-4d98-85ca-f28b7ba99c84',\n",
" '728b31ff-e435-4105-9900-cfbb157ad5c8',\n",
" '7c7df2e3-d6b3-4288-9c00-6ec16d1f57ff',\n",
" 'c3473aec-aa90-4608-b21c-c0d269f69980',\n",
" 'fbd39b2b-9c7d-47a2-907c-90c8d2ea728d',\n",
" 'bf9dc1a6-1453-47c5-94a7-72d610f8e132',\n",
" 'fa39c78d-196a-4894-b4fe-7ede47b60bef',\n",
" '9bc1523e-5a9a-44b1-a030-51b55d5cd0aa',\n",
" 'bd731101-0a09-4323-a7b4-453adae1ddbb',\n",
" '233c1dff-8bbd-4085-b551-50ef13e3038a',\n",
" 'bc71645e-59ba-4c2d-93cf-b09e934e38fa',\n",
" '234ddcad-e01a-43b3-8966-9d9b678ed9bf',\n",
" 'db46f29c-153c-4b88-a9ce-bdcb17564d61',\n",
" '424eb1c6-f422-4a11-a36b-3111a4c19a3a',\n",
" 'dd09ecc6-6e73-41a0-ac73-d233b25a6d43',\n",
" 'ab2f2608-e252-44ca-bda9-1fe21a122d17',\n",
" 'a10de705-dfbf-4f96-b8ed-39cf0dde458e',\n",
" '5027e5f2-de68-45fa-9cd7-34263c2a75e4',\n",
" '8a894a53-2010-4b10-87f1-619a74176310',\n",
" '7670fcdc-89b7-4923-a1ec-62dd74e8c6d5',\n",
" '6b8e02b4-7125-497a-b8ca-33a2ff094cc1',\n",
" '258daa9d-1e10-4e69-8ed7-65267f9e92c4',\n",
" '759cbb38-fa12-43c5-ad26-e3bf4088e1d1',\n",
" '7301cece-7610-4136-ba6c-1d49f93a5b7a',\n",
" '45d2b71e-c2f2-4253-9211-7af67a486d61',\n",
" 'ec4f35a8-ac22-4975-83eb-254b68c10c52',\n",
" '65d10aa6-2128-4700-8e76-eee73adc6a41',\n",
" '4ac20f8c-1bbc-489b-98ad-4288be72c40a',\n",
" 'abdf6689-0120-472a-ae93-793912b8547c',\n",
" '8a996f4b-e839-4d55-af16-8f1f373b1d53',\n",
" '3472ab37-0685-484e-8345-0e8f817afc88',\n",
" '6ead411b-cddd-4755-a381-c6f6639b635d',\n",
" '2640da72-2d4f-4bcb-887c-96b68feae3af',\n",
" 'dc3fc29b-54a8-46b7-b882-8b30815ed7a4',\n",
" '2e774c3f-d6a2-40bd-a794-14d08833b193',\n",
" '147ce7a8-a754-4159-8a64-998d3058c741',\n",
" '38762c8c-e330-441e-90fb-78ad5b60392f',\n",
" '41c5b3e5-fc94-4c10-91c2-c53b901a6c7a',\n",
" '5cfa6000-32c6-4d9d-b62b-0a68c18c921a',\n",
" '5cdd005c-f681-437b-86a0-45bcb579e08f',\n",
" 'daa99c5f-9f8b-4653-b9a8-f774924b8226',\n",
" '21920e70-3a3d-4493-8103-9f33e9b47fd0',\n",
" 'afc2f986-61c7-4e3b-9854-cd715b502066',\n",
" '2aa3c986-5f4a-4289-a733-17ab807d251d',\n",
" '53486b6a-5958-4486-a3d3-5b65277fec4e',\n",
" 'a0bf1425-43a2-4978-be0d-8f6e36ad8dd1',\n",
" '886f7164-7070-4a85-9263-9f67b37dcbf5',\n",
" '33442b1f-f371-4f78-88be-0ae9966fb879',\n",
" 'f6e2dd53-25a0-46c6-80a3-e280a4abecad',\n",
" 'd6ac4b11-9787-41a6-962a-399060d94372',\n",
" 'cb61e789-ca02-42d5-bdf7-7a9f1a572dce',\n",
" 'f23474ee-93b1-4c99-878c-81b3e2e65b78',\n",
" '38e9dba2-4dc1-4978-8a20-c97a81dee761',\n",
" 'b36dd80d-e269-47c8-b33d-c5b923c69e57',\n",
" 'eed8f29b-4852-46bc-bc93-7b57ba51749a',\n",
" '61561aeb-12cb-4c0d-8cd3-2990068b8afc',\n",
" '9b9127c7-8018-474a-ae32-7e49d74a3355',\n",
" '6b11df08-7391-42fc-9633-d5b10e1cd9e9',\n",
" '15f8f531-ca71-4ff3-aeea-bcc86993ce9e',\n",
" '245502d5-3557-40e8-8ccb-c6c6defc76cd',\n",
" '430d205a-9d01-40b0-8052-07bdfc2df7fa',\n",
" 'ed3acc4f-5987-4f15-b84d-cb1cd32682c3',\n",
" '2fab7f25-5be0-477e-90ed-55804538d98c',\n",
" '989fa082-7935-4b19-8f3f-6afcf5845bb6',\n",
" '13924bed-e0bb-44bb-8098-957ce8fb0f46',\n",
" '724fbc43-c7c1-490c-90fd-4cac66c7cc82',\n",
" 'c933c996-e6d8-4ef1-a34a-c78f0b003151',\n",
" '9a66fcdc-02df-4c77-a6c6-995ada3626cb',\n",
" '9da25e57-2a4d-46c3-bc7b-094f477a142d',\n",
" 'e92975dd-1af9-45b6-8aa3-30029df78d64',\n",
" 'a75f2551-ae59-4510-852b-50bf48c346ef',\n",
" 'a3ef7960-0d97-4257-8a39-2eb0a11aa4a4',\n",
" 'c025d384-779f-4fff-bf63-cf2c9656419b',\n",
" '1e90eb84-e980-4ede-b006-9b519b425892',\n",
" '963fd908-c969-4bde-9f7d-f3da82410816',\n",
" 'c6070828-4e45-4f80-afbf-58cc7e29219f',\n",
" '8510805e-eb29-47ed-845e-5dbdff3a2dc9',\n",
" 'd44dfba7-e970-4170-ac2f-2eeb47d3d7df',\n",
" '088f1f80-67f5-4c6a-a7d5-857e5b385a06',\n",
" '9e4c1f85-ac21-48c5-b3ad-443f87a690c7',\n",
" 'd53cc6cb-378e-429b-a6f9-cf47d8eba08a',\n",
" '6e065b15-396e-49f5-b890-4f9b604f0203',\n",
" 'b03d2225-147e-4e02-a316-9c9654572b27',\n",
" '335d7168-ce3c-4736-a1cd-40d083dad6cf',\n",
" 'c589c4fc-2bff-43df-b23f-5cf888ad6869',\n",
" '781e6435-575a-42e9-a2f5-356b07d61524',\n",
" '2ebe6232-3f20-4581-b602-7bed5f7d8e3b',\n",
" 'c4a5c571-c678-441e-a809-1ab8606a4283',\n",
" '562b4b25-3245-403d-989f-2588a97fa208',\n",
" '0167e871-7711-4b81-bf6c-eb324e4aff97',\n",
" '559265d2-8add-4e56-8b2c-fe4d5224bace',\n",
" 'ad13f4e1-f199-46bb-80e7-cc67890e8e80',\n",
" '952761d4-aa8b-4a1a-b17d-aaaa032d00d9',\n",
" 'fa1346e0-93aa-4f6e-9743-e0012db79dc6',\n",
" '8d5e5448-16f2-491f-ba68-c07b6fd949ba',\n",
" '6a2fbd8e-7511-4151-bf4d-0d125144456a',\n",
" '7c8c2f86-68ce-48ce-a58c-3c928163c105',\n",
" 'c6199e5a-2dfd-4e68-9c4d-bbf1f56a0af6',\n",
" '7a599c8d-7003-40c5-8282-9e5e9e5fb2f7',\n",
" '1f2a73be-208d-49a6-9aa7-2ae1772ec371',\n",
" '9e82f1e0-b2a9-4e47-9488-49971ed6d1d2',\n",
" '683d50c8-21e6-49f7-a110-52c27ee72b96',\n",
" '11c504af-2c65-4809-abb6-bbf5a85cc440',\n",
" '006f4497-4fee-4dbc-a912-ce79ea59e8d7',\n",
" '5606d4fb-d416-4245-a721-24cdb0756781',\n",
" 'c0dd55bf-dce9-4241-823f-3ad567457b89',\n",
" '080e8d7c-92c9-4c5a-b072-13797a34845d',\n",
" '017a23a4-eedc-4f9e-b279-0977f8ff5a37',\n",
" '72fc71b1-6e4d-4b4d-a607-0d0cfc7150b6',\n",
" '7ee71f94-4d4a-4d39-9197-bae2522ad905',\n",
" '08f9c05f-9afc-4ee8-878e-8ffd7748c6c0',\n",
" '881982e5-0e7d-4bb0-911a-7befee5d7300',\n",
" 'b9c796ab-75ad-4e0b-a011-f96c7747d4f4',\n",
" '65932185-eb0a-4206-b85a-c2978c270325',\n",
" '9b05c349-9d47-4673-aa6d-ce6cb830f00e',\n",
" 'a1148316-7c38-4bc3-85fd-3810c7db5ba8',\n",
" '01140127-00b8-414f-9ad8-b320987b83ed',\n",
" '09e26e7a-0f12-4741-bcd4-d54c131ccfbf',\n",
" '364de764-413d-40ea-8b63-9c8e2e487a8b',\n",
" '41320ff2-289d-4a85-bd63-fcc97ffd8d83',\n",
" '7ff9f554-4053-4548-a248-f416dedebf27',\n",
" '48de40bd-d33f-47dd-bad1-feebb2d2f9ea',\n",
" '3ff97f20-9b2b-42b4-a70d-f4acf05da82d',\n",
" '9d069b92-eb52-42bc-b24f-9a0b79e1c605',\n",
" 'e1e21570-59c5-4455-b8bd-fb001dbbb7f0',\n",
" '67992970-6b27-40ff-a76e-7159d9dd9bbe',\n",
" 'ad5c2a02-73db-4e4d-9815-2738357d2ab6',\n",
" '104e1546-cd5d-4d20-a4ef-59421a1269aa',\n",
" 'f41e2391-b848-4c8e-bc6e-35e1bdd583bc',\n",
" '4b187138-4364-4fb7-9294-fa3edcca10f1',\n",
" 'cc95950a-f3be-4892-991a-2824a0e9bcd6',\n",
" 'da015d90-b42f-4571-b529-90dddf3599be',\n",
" 'fdd6242b-5718-4bbc-97bf-45222a32ed3f',\n",
" '2342eb55-06f7-43b6-9468-209c784ec30a',\n",
" 'e2d3cbb7-828b-48cc-804c-1c1904a6cc23',\n",
" '2ee7ed42-d47b-4c81-af2e-34a398565d5b',\n",
" '3af20dce-d696-4766-a7b1-4f6d260f8558',\n",
" '3ec91b80-8763-4fbf-bf92-d58f546b43fb',\n",
" 'ebe9e36e-aff6-40a3-b899-174847a85ce3',\n",
" '2ab9a7b4-6c7c-430f-af10-5af465fb2a8a',\n",
" 'bedc141f-0530-4595-8a0d-e97c805dc8d5',\n",
" 'fcd9f3ac-76c0-4ce1-bc20-7838533240e8',\n",
" 'c112080e-ac50-47f7-a15c-7f1227daf1cc',\n",
" '748abf8f-1092-4c26-a514-ac28340e1658',\n",
" 'ed55a2da-b986-4c58-af56-ee9ba84683d7',\n",
" '1f7dbeca-ddf5-44b8-a9b2-b5667b45b968',\n",
" '4e8fe6b7-c6b9-4cc5-a626-274d55e8dc2d',\n",
" 'b41f1d3c-b55a-4074-9189-09f963f92138',\n",
" '11b13c5c-8311-4aa2-b502-f3e7cfc92c1b',\n",
" '82728fc1-17c9-4555-9397-b113deef0163',\n",
" '79139275-7a28-4b06-8f1c-501291a6c2ac',\n",
" '122e34f6-c1d2-42fc-9d6a-8bd6181e0617',\n",
" 'd59909cb-c00e-44b4-8750-24b89f104309',\n",
" 'de4d0579-6cb4-4639-be6e-a414ecc775b1',\n",
" 'ed80c00c-b160-4933-9f4d-997ce0495c97',\n",
" '18f0f70d-eb48-47f0-ab15-14b7212f644c',\n",
" '3e52da1d-2bce-4a4c-94fc-bfda71be611d',\n",
" 'b6c57b87-ef70-43b4-829b-0edc3b15b7f9',\n",
" '382497e7-26c7-4571-80ef-d4766c49e30e',\n",
" '9e4ba251-9ff9-4d8c-9517-4cd72930c295',\n",
" 'fae5e07b-04fa-4561-a785-7e8c0c0d0d9e',\n",
" '8fc49604-486a-45d8-84a0-d76c03e83c48',\n",
" '2c11678e-b127-444b-a8bc-eb4c452641ca',\n",
" '06586c88-b389-417a-a4b1-7d496e82e959',\n",
" '44f40622-6a24-4a12-a52b-36d56c2a66c8',\n",
" 'ad79f083-fef3-41ca-9eb2-91b8707be832',\n",
" '3261f65e-2985-45e5-893b-fcb64c645a3e',\n",
" '2752154c-d8fa-4862-a1f6-e3265687266f',\n",
" '15359284-5431-494b-817a-817dff3ac409',\n",
" '2c32cbfe-d40b-4196-807f-96a384ea6150',\n",
" '23c330c1-f852-4811-87b9-621ff4662e86',\n",
" '488967a2-d13c-48d0-a7aa-e7722bff4039',\n",
" '562928a4-1a8e-4636-b324-08edbfa179a7',\n",
" '809ea5ed-4972-4a6a-bf49-2abffff29bd9',\n",
" 'b4ce51da-29f9-48c5-91d2-16d42b079c7f',\n",
" 'fa1a452c-f3f7-4360-a493-7975ea4e97bf',\n",
" '51daa37d-469e-485f-8257-080d33dea89c',\n",
" 'ea9f45d3-a8dd-4aa2-a87a-d1e5d179137d',\n",
" 'b18b2db0-4494-404a-a714-8581949aa7bb',\n",
" '0d2404e2-0b15-41ba-ac26-432a6a524a66',\n",
" '08e14da1-36f4-440e-b570-287f2e0f8fa6',\n",
" 'a6632d4d-da7e-4ef6-a405-8ea0a76a8030',\n",
" '46c2227d-13b2-47c1-b677-226f25432f9f',\n",
" 'b3f8cef2-2635-48f0-84fd-6521641c3235',\n",
" '927ae468-90d0-4ca4-822a-7d27e3ef9e63',\n",
" '8bfd9bb6-3401-43f1-9343-9654a7c9fd3e',\n",
" 'dc9f2e15-5f18-489b-8962-7472a0617c6a',\n",
" '426d2766-4de8-43b5-b71f-e9714e9c5e85',\n",
" 'f98f1403-437a-4a91-9042-06549f7b80f3',\n",
" '20421631-0276-4c59-87d0-91645be3f0df',\n",
" 'f1e1d2e6-a1f5-409e-a324-8c8b0f6bb613',\n",
" '36f27e4f-3cf5-4e42-9861-7a08c0aedafc',\n",
" '0489ab7f-8322-48bd-97e3-1a1947545255',\n",
" '6678c5c6-68c8-4ba7-ad5d-7daad1f14b67',\n",
" '2c2624c0-00ee-4a50-a9c3-d619aac174f5',\n",
" '733b1886-889f-4abe-af32-e4bd4240d89b',\n",
" '30ba6b2b-ae45-4916-98f8-d8a23e0f36bf',\n",
" '65f281b5-4583-484d-9c61-5b7ff4c6ffdc',\n",
" '6dd0c144-e688-4a37-a3cb-25de6cbc4079',\n",
" 'c89aed42-d499-4be6-a7bf-37f25cf83ba9',\n",
" '67a6680a-9b56-47bb-aa59-68eaf515765b',\n",
" 'eaef09c8-bf99-4afc-bf98-431dcaafbc98',\n",
" '9ef0c31f-a9c1-455d-8f5e-d3b3df930d2d',\n",
" 'c35099a2-dd2c-411d-ac21-be00f99c2e95',\n",
" '04568e6a-5c82-431d-94f2-971354a12dc3',\n",
" 'fe4afc1d-98d1-43d2-bfb0-ef8fa173c1d5',\n",
" 'd72984d6-bb29-4ece-8591-3aaba9e86a21',\n",
" '181b74db-57ec-4cab-9cfa-4478c2cc56e0',\n",
" 'e447aced-1cf3-4cc8-a2ac-8d92692ae317',\n",
" '618dd857-4c01-488d-bc8e-daf62d49e6ce',\n",
" 'caffe3cf-cac2-41d2-b9f8-d003babb6de2',\n",
" '633e7e0b-bb86-466c-b8bc-86eccc8876df',\n",
" '473a2d5d-2c0b-47fb-8eb3-06ec4dc5bef5',\n",
" 'f0555e32-85ee-4eb0-8cc0-5122dd5474ce',\n",
" '7b58b026-5096-4868-8a0e-37388fe44e14',\n",
" 'a19668e9-bc88-427c-bb54-b19afb0d8978',\n",
" '97592723-e14b-4fa2-8182-09dd6d744051',\n",
" '6c75c834-1701-49f2-80d3-5dcc1a7526ba',\n",
" 'a14d9c26-830b-4f40-b554-0f0e958e8f75',\n",
" '2d535355-9775-45b2-808a-be9512e148d0',\n",
" '02d1d69d-996a-4683-b6d8-c556869ed8d6',\n",
" '6456b96a-31c3-4aaa-9bb6-7e91928ea030',\n",
" 'beec7c15-535a-4c5d-8057-29ee03b655f6',\n",
" '164cfa0d-93f4-4609-95dd-20bab050641e',\n",
" 'bf557a2b-4653-4057-af63-4b6e31b99c8d',\n",
" '654ed112-47e3-484e-ab01-fa39424618db',\n",
" 'aa685f80-75d2-478a-8092-c2f162a17146',\n",
" '0b1b5d91-fd29-4cab-a5cd-573b65030638',\n",
" 'f7534946-8739-432e-9a40-109c0d2ffc02',\n",
" '43919f70-954a-4176-ba09-fad5a45e5639',\n",
" 'b1b7dc67-3c63-4b30-98e6-643c0a2e4cbb',\n",
" '49b2b2f4-02c9-409e-8055-bdc3af683bad',\n",
" 'f4a0971b-f6e7-468f-9cb0-0566bc38900b',\n",
" 'b5be2591-0253-4198-a9ba-c53d8b9fa258',\n",
" '9f50aaf1-6ae5-4290-9b16-fc459f18e49e',\n",
" 'c3c0ab19-c29c-4ca9-a5af-ed8612b22866',\n",
" 'c35894a7-a112-4952-b199-6d1d698e05d3',\n",
" '65279f33-e3bb-4a4c-9110-55d143f30452',\n",
" '4c1db7c0-a017-4948-b6b2-6798b208e03a',\n",
" 'f186fc96-293d-4b46-afb8-148937322107',\n",
" '6f6314d5-c2f9-4bc8-b49f-376c23dd6c1c',\n",
" '0c2329bd-00b9-4b35-b1ae-29dcc9883e36',\n",
" '7f330191-2c6a-4bce-b460-ef7623ac867b',\n",
" 'c81426a4-bc32-4f33-b772-39317ac6e32d',\n",
" 'aebdcd61-a961-46b1-b646-88331a92268c',\n",
" '06b5b2b3-175e-4457-ae56-ed16ef8499b6',\n",
" 'eeb8ed29-4849-4766-8b39-f0bac8b1d98f',\n",
" 'e53d45f9-c59c-49a1-95b1-87ae31c1a1ad',\n",
" '15f2c090-17e9-4c14-8b2c-f0608bf39b17',\n",
" 'bf163dab-5020-43d7-81b7-4d24bba67812',\n",
" 'b904d9c2-d030-402f-a560-f3e943a13fe7',\n",
" 'f8e95a24-86ea-4bb7-bcf0-fedb5e50c458',\n",
" '6a7071ee-c597-479d-b628-52b9a544353e',\n",
" 'd6829147-d75d-4f61-950c-a9c1053528a1',\n",
" '0e89e5c1-2492-4f38-bc77-4ae95cdf38c9',\n",
" '19db26e1-7d12-4550-b122-0574a54fedb2',\n",
" '94536945-c8f5-4707-a25c-c2b406e8dd72',\n",
" '5d5ab06e-eeed-461f-ba3f-1baf43673acb',\n",
" '540fa0c1-229a-47e7-9110-b2b6c520799e',\n",
" 'bfc9ab30-5d83-4ae1-8880-b81ca862eadd',\n",
" 'c7717ece-c58d-4020-999e-c8f56b66e611',\n",
" '5765271c-8921-48d5-a54b-091c3a6ff657',\n",
" '644e4818-182e-4f4c-bb17-3001d51c69b0',\n",
" 'bf45cef0-c486-4f27-861e-32bd0dfbae96',\n",
" '2253e520-45d0-4738-9322-d9f496291860',\n",
" 'caffe088-caba-4b76-8648-56b5fb219bf0',\n",
" 'eca24411-a95e-4bc2-a536-0a4487972e4a',\n",
" 'b5fa35f5-5787-415f-a78e-b1689730543b',\n",
" '3cc6e1fe-c902-4560-b937-44eecfce07c7',\n",
" 'a98a43d9-6bc0-4e99-a2e5-1ed066c48710',\n",
" 'af4eca3c-b4d4-4e10-8886-ed97db17bfcc',\n",
" '2c43ada4-7956-4ef1-89d8-9a6b3e8d1bcd',\n",
" '952ad250-46dc-49dd-8490-370cce89abbc',\n",
" '41c10ccc-ed05-4fba-830b-5acf4c7115aa',\n",
" '05f7d43c-618c-411f-9924-7e742f4a090d',\n",
" 'd4e6409c-c8a8-457a-8786-91958f060905',\n",
" 'aaaa3c8a-6fc3-4145-854b-09b89c6c6c7a',\n",
" '6f183409-5a70-4cf6-983c-6174885bd59f',\n",
" 'bdc59540-2526-456f-bd97-219a58b86e7f',\n",
" 'b3152ce9-83dc-4f43-b3bb-112c1b685d50',\n",
" '40cfecec-3fa1-4a95-bcaf-35559332c115',\n",
" '295a4e6f-c9e2-46b2-be6b-a03bea194bd7',\n",
" '3342f393-cfe5-41e9-89ad-c6815efc640d',\n",
" '96c91a81-7680-4642-b56b-b09b0c3ebdad',\n",
" 'e0f399d1-48e0-4d0b-b5c9-6da1b021eefe',\n",
" '62178f4a-d179-415b-a3a2-7b5fb78c2ed5',\n",
" 'be300a52-fddf-49a3-8cd9-ac05d24788c2',\n",
" 'ecbdace8-b596-4889-8aa4-29b67d6d295a',\n",
" '56cffc9d-9140-4619-bef7-bc7c0954cf4e',\n",
" '5986bf6b-cc0d-4207-8e49-259abc6ad64c',\n",
" '504ec6ee-8d58-4aef-a2d2-f8d939a47ca8',\n",
" '8990e596-f032-4d91-94b8-020e09b8085a',\n",
" 'a351c6d4-8b04-49a0-9439-ab8d935ef11b',\n",
" '4c1d3724-a625-41fa-b020-12b6fdc889f1',\n",
" '0fd4a2bb-4bec-475e-a50d-2c256c390855',\n",
" 'e4995619-d1e0-4aee-9649-113ba401433f',\n",
" '27b58af1-22aa-408e-b065-9ee0d6a501bb',\n",
" 'feb6ddc2-4427-4dad-be78-7b0cd23b8edb',\n",
" 'be56e754-f59d-4b55-8a0a-81c3d36faf67',\n",
" '786736da-0221-46ba-b0bf-6af941036100',\n",
" 'f46f47e9-f7e7-4ec4-89d1-aeea37726e04',\n",
" '39bc5da8-8900-463f-a6eb-fcd000bfa558',\n",
" '6de930c0-3487-4a3e-9412-f4fc86577817',\n",
" 'e46c34ad-4d71-40fa-a35e-38b44cc98b2d',\n",
" '76e420bc-7d84-4fbe-b5f1-c4f3a31d6c3a',\n",
" 'c95710ce-a30c-44c0-b8dc-de3a0296316c',\n",
" 'c643189f-3dc7-4113-969c-57b2fc58656f',\n",
" '3afe8b7b-33b3-440c-aa9c-e3c922a67c97',\n",
" 'dc2e2126-8938-40ce-836a-3e3469ed7004',\n",
" 'd7638f52-6fb6-445b-975e-563df7e59a2c',\n",
" '0fb6889c-5718-4d5f-89fc-2b9bddd90fc3',\n",
" '0c8a2480-d196-4c3e-a3b7-3ab48a51d759',\n",
" '45c86d9e-1605-49a4-a8a8-5283167a0c8d',\n",
" 'd8a45082-21ef-4aa6-8eb8-c0ea8af962a8',\n",
" '3cbab7a8-99cd-4a7e-8dff-78857d8c8867',\n",
" 'c88314f1-df6f-4b8b-a342-7e04c32852cc',\n",
" 'd5dc67bf-c2d2-4c02-a3d6-765e59f7ec21',\n",
" 'f673f078-2224-489a-b621-f8921167624a',\n",
" '773348e4-b588-4cf1-bd67-d5fd71f307d8',\n",
" '8e5a9383-666e-499b-8b15-ed5bc7e89004',\n",
" '692f8683-90eb-4b20-a54e-03fa7e2d1d17',\n",
" '55662b93-701f-4722-a522-710be609bbbc',\n",
" '90543ef9-3bb0-4cd9-9f8a-6d534fd7c746',\n",
" '22b13183-48bc-4418-ab6b-ee4d9c2d6d4a',\n",
" '8d11f5ae-bfb6-4be0-8140-8c51d9f0b209',\n",
" '24d33279-3b31-4614-92ee-c2a2934dce26',\n",
" '90f2923c-1998-4694-bc19-995528128877',\n",
" 'f75343f0-991f-4906-badd-521c1883b3c3',\n",
" '3548beb7-1890-484d-a970-99151fe08c7e',\n",
" 'b8196dec-2f36-442f-b462-90f51668fced',\n",
" 'b1a5b964-9bcf-404e-a5e2-0760dc0ba092',\n",
" 'c2e54ca5-ff92-4e58-af4c-9460cad3b4c3',\n",
" '12bf4a0b-6ca4-4724-93d4-dce1a3a1ad75',\n",
" '4fe7698b-a96e-40b6-a677-88add38fd5d7',\n",
" '0bd883e9-6560-43dd-81a2-84c0b8536c67',\n",
" '8031272b-05e4-4c6f-959c-d24599a31326',\n",
" '5540724c-67ec-425f-b838-b8e898009627',\n",
" 'bfc6f167-ca08-4e80-bac9-db5a9296dbe5',\n",
" 'b7c3f3b7-cca3-4c54-9e7e-c50fcde6d8ee',\n",
" '2cdec69d-5ee5-4fdd-b7c0-94591cead920',\n",
" 'd0a6fb5f-f743-422c-8614-25446c98700b',\n",
" '3a228170-5a07-4ce9-9742-a81a122d7d0c',\n",
" '35d46171-9a0f-472d-a2a9-ef8081a95777',\n",
" '54cd3eac-d9a1-4f34-80bf-eaa0a9ea0d2e',\n",
" 'dbdc8939-abf0-4995-bb7d-f0856523ef33',\n",
" '732f91e6-ff38-423c-b146-dc25c5a05a37',\n",
" 'f84ea17c-0b6f-4dc1-9b70-451945ed82db',\n",
" '30bebb36-0762-44de-a949-9bff19bc59df',\n",
" '92cc5e32-23bc-4bd0-91ec-430f19c93422',\n",
" '5e56631b-8b31-4294-9678-8a777c622b89',\n",
" '39aed3e9-06a5-44cc-842f-2fb564c4daa2',\n",
" 'b2c552d5-54e0-41c3-bbe7-340fcefcebb4',\n",
" 'a36d9346-e58b-478f-99be-16d680adaace']"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# indexing embedding\n",
"vector_store.add_documents(splitted_docs)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# save vector_store\n",
"vector_store.save_local(\"faiss_index\")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '설정 폴더.md', 'path': 'obsidian-help/ko/파일 및 폴더/설정 폴더.md', 'created': 1727746136.5369875, 'last_modified': 1727746136.5369875, 'last_accessed': 1727746143.4086661, 'aliases': \"['.config', 'Customization/Config folders']\"}, page_content='Obsidian의 설정 폴더에는 [[보관소 관리|볼트]]와 관련된 모든 설정 파일이 포함되어 있습니다. 기본적으로, 설정 폴더는 `.obsidian`으로 명명되어 볼트 폴더 안에 위치합니다. 동기화 서비스를 사용하거나, 동일한 볼트에서 다른 프로필을 테스트하고 싶을 때, 설정 폴더를 변경하고 싶을 수 있습니다. ## 설정 폴더 변경하기\\n\\n설정 폴더를 변경하려면:\\n\\n1. **설정 → 파일 및 링크**를 엽니다. 2. **설정 폴더 우선순위 전환**에서 마침표(`.`)로 시작하는 프로필 이름을 입력합니다. 예를 들어, `.obsidian-awesome`. 3.')]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vector_store.similarity_search(\"옵시디언에서 볼드를 입력하는 방법은?\", k=1)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '첫 노트 만들기.md', 'path': 'obsidian-help/ko/시작하기/첫 노트 만들기.md', 'created': 1727746136.5357163, 'last_modified': 1727746136.5357163, 'last_accessed': 1727746143.2059207, 'aliases': 'How to/Create notes'}, page_content='\\nObsidian에서 노트는 일반 텍스트 파일로 저장되므로 이동성이 뛰어납니다. 노트를 일반 텍스트로 작성하면 Obsidian 자체를 포함하여 어떤 앱이던간에 노트가 오랜 시간 동안 보존될 수 있습니다. 노트를 장기적으로 보관하려는 계획이 있다면 이것은 좋은 소식입니다! ## Create a new note\\n\\n새로운 노트를 작성하려면 다음 단계를 따르세요:\\n\\n1. 키보드에서 `Ctrl+N` (또는 macOS에서는 `Cmd+N`)을 누르세요. 2. \"Obsidian\"을 노트 이름으로 입력하고 `Enter` 키를 누르세요. 3. 다음 텍스트를 노트에 복사하여 붙여넣으세요:\\n\\n> \"Obsidian은 일반 텍스트 마크다운(Markdown) 파일로 이루어진 로컬 폴더 위에 구축된 강력한 지식 베이스입니다.\"\\n\\n## Format your note\\n\\nObsidian은 [마크다운(Markdown)](https://en.wikipedia.org/wiki/Markdown)도 지원합니다. 이는 일반 텍스트 파일에 서식을 추가하는 데 사용되는 마크업 언어입니다. 1. 다음 텍스트를 Obsidian 노트의 맨 위에 복사하여 붙여넣으세요:\\n\\n > \\\\# 두 번째 뇌, 영원한 당신을 위해. 해시태그 (`#`)는 텍스트 행을 제목으로 변환합니다.')]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vector_store.similarity_search(\"옵시디언 노트를 싱크하는 방법은?\", k=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## BM25"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"from langchain_community.retrievers import BM25Retriever\n",
"\n",
"bm25_retriever = BM25Retriever.from_documents(splitted_docs, k=1)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '검색.md', 'path': 'obsidian-help/ko/플러그인/검색.md', 'created': 1727746136.538845, 'last_modified': 1727746136.538845, 'last_accessed': 1727746143.4981472}, page_content='검색(Search) 플러그인을 사용하면 보관소 내의 파일을 검색할 수 있습니다. 기본적으로 검색은 왼쪽 사이드바(돋보기 아이콘)에서 찾을 수 있습니다. 또한 `Ctrl+Shift+F` (또는 macOS에서 `Cmd+Shift+F`)를 눌러 검색을 열 수도 있습니다. - **선택한 텍스트 검색**: 편집기에서 텍스트를 선택하고 키보드 단축키로 검색을 열면, 검색은 선택한 텍스트에 대한 검색 결과를 표시합니다. - **최근 검색어 검색**: 빈 검색어로 검색을 열면 최근 검색어를 나열합니다. 이 중에서 검색어를 선택하여 검색어를 다시 사용할 수 있습니다. ## Search terms\\n\\n검색어는 검색 필드에 입력하는 단어 또는 구절을 의미합니다. 효과적인 검색어 작성 방법을 익히면 큰 보관소에서도 빠르게 원하는 것을 찾을 수 있습니다. Obsidian은 노트와 캔버스의 내용만 검색합니다. > [!tip] 경로 및 파일 이름 검색\\n> 기본적으로 노트와 캔버스의 경로와 파일 이름만 검색할 수 있습니다. 보관소의 모든 파일의 경로 또는 파일 이름을 검색하려면 `path` 또는 `file` 연산자를 사용하세요. 검색어의 각 단어는 각 파일 내에서 독립적으로 일치합니다. 정확한 구를 검색하려면 따옴표로 묶어줍니다. 예를 들어 `\"스타 워즈\"`처럼요. 정확한 구절 내에서 따옴표로 묶인 텍스트를 검색하려면 따옴표 앞에 역슬래시(`\\\\`)를 추가합니다. 예를 들어 `\"그들은 \\\\\"안녕\\\\\"이라고 말했다\"`.')]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bm25_retriever.invoke(\"옵시디언에서 볼드를 입력하는 방법은?\")"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '홈.md', 'path': 'obsidian-help/ko/홈.md', 'created': 1727746136.5413582, 'last_modified': 1727746136.5413582, 'last_accessed': 1727746143.6017084, 'aliases': \"['Start here', 'Obsidian/Index']\", 'cssclasses': \"['list-cards', 'hide-title']\"}, page_content='# 옵시디언 도움말\\n\\n공식 Obsidian 도움말 사이트에 오신 것을 환영합니다. 여기에서 [Obsidian](https://obsidian.md/) 사용 팁 및 가이드를 찾을 수 있습니다. API 문서는 [Obsidian 개발자 문서](https://docs.obsidian.md/)에서 확인하실 수 있습니다. 다음 언어로도 이 사이트를 둘러보실 수 있습니다:\\n\\n<select class=\"dropdown select-location\">\\n<option value=\"\">English</option>\\n<option value=\"https://publish.obsidian.md/help-ar\">العربية</option>\\n<option value=\"https://publish.obsidian.md/help-da\">Dansk</option>\\n<option value=\"https://publish.obsidian.md/help-es\">Español</option>\\n<option value=\"https://publish.obsidian.md/help-it\">Italiano</option>\\n<option value=\"https://publish.obsidian.md/help-ja\">日本語</option>\\n<option value=\"https://publish.obsidian.md/help-km\">Phéasa Khmêr</option>\\n<option value=\"https://publish.obsidian.md/help-ko\">한국어</option>\\n<option value=\"https://publish.obsidian.md/help-pt-br\">Português</option>\\n<option value=\"https://publish.obsidian.md/help-ru\">Русский</option>\\n<option value=\"https://publish.obsidian.md/help-vi\">Tiếng Việt</option>\\n<option value=\"https://publish.obsidian.md/help-zh\">中文</option>\\n</select>\\n\\n## 시작하기\\n\\n만약 Obsidian을 처음 사용하신다면, 저희 가이드를 통해 Obsidian을 이용한 기본적인 노트 작성 방법을 배워보세요:\\n\\n1. [[Obsidian 다운로드 및 설치|다운로드 및 Obsidian 설치]]\\n2.')]"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bm25_retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Kiwi BM25\n",
"\n",
"한국어 형태소 분석기 키위(Kiwi)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"from langchain_teddynote.retrievers import KiwiBM25Retriever\n",
"\n",
"kiwi_bm25_retriever = KiwiBM25Retriever.from_documents(documents=splitted_docs, k=1)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '보관소 관리.md', 'path': 'obsidian-help/ko/파일 및 폴더/보관소 관리.md', 'created': 1727746136.5369236, 'last_modified': 1727746136.5369236, 'last_accessed': 1727746143.3503828, 'aliases': \"['User interface/Vault switcher', 'How to/Working with multiple vaults', 'Vault switcher']\"}, page_content='**목록에서 제거**를 선택합니다. ## Transfer settings to another vault\\n\\n다른 보관소에서 동일한 설정을 사용하려면 선호하는 파일 관리자 (또는 터미널)를 사용하여 원본 보관소의 루트에서 `.obsidian` 폴더를 대상 보관소의 루트로 복사하십시오. 변경 사항을 적용하려면 Obsidian을 재시작해야 할 수도 있습니다. > [!note] `.obsidian` 폴더는 어디에서 찾을 수 있나요? > 기본적으로 대부분의 운영 체제는 점 (`.`)으로 시작하는 폴더를 숨깁니다. `.obsidian` 폴더 및 해당 폴더에 액세스하는 방법에 대한 자세한 내용은 [[Obsidian이 데이터를 저장하는 방법#Vault settings]]을 참조하십시오. ')]"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kiwi_bm25_retriever.invoke(\"옵시디언에서 볼드를 입력하는 방법은?\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '여러 장치에서 노트 동기화하기.md', 'path': 'obsidian-help/ko/시작하기/여러 장치에서 노트 동기화하기.md', 'created': 1727746136.535341, 'last_modified': 1727746136.535341, 'last_accessed': 1727746143.8404388}, page_content=\"### Why can't I sync using X? 다른 서비스를 파일 동기화에 사용하는 경우가 많고 이를 사용하여 노트를 동기화하려는 경우를 이해합니다. Obsidian은 iOS에서 다른 Markdown 편집기와는 다르게 작동합니다. 1Writer 및 iA Writer와 같은 편집기는 한 번에 한 노트만 액세스하므로 내장된 문서 지원을 사용할 수 있습니다. 반면 Obsidian의 많은 기능은 보관소 전체에 액세스해야 합니다. 예를 들어 파일 이름을 변경하면 Obsidian은 해당 파일에 링크된 보관소의 모든 파일을 업데이트해야 합니다. 지원되지 않는 위치 외부의 수천 개의 노트로 구성된 전체 폴더 구조를 읽고 수정하고 모니터링하는 시스템을 구현하는 것은 복잡합니다. 이 제한 사항을 앞으로 해결할 계획입니다. 개발자라면 각 개별 동기화 서비스에 대한 Web API를 사용하는 플러그인을 빌드할 수 있습니다. ### Where are my vaults stored? 보관소를 만들 때 iCloud Drive를 사용하지 않을 경우 Obsidian은 Obsidian 앱의 로컬 파일 시스템에 저장합니다. 다른 앱인 [[#Working Copy]]과 같은 앱은 파일 시스템에서 보관소를 선택하여 액세스할 수 있습니다. **주의:** 로컬 파일 시스템에 저장된 노트는 Obsidian 앱을 삭제할 때 iOS에서 삭제됩니다. 앱을 삭제하기 전에 노트를 백업해야 합니다. ## Sync notes on Android\\n\\nAndroid 장치에서 노트를 동기화하는 가장 쉬운 방법은 [[Obsidian Sync 소개|Obsidian Sync]]를 사용하는 것입니다. Obsidian은 Android 장치의 로컬 폴더에 노트를 저장하므로 폴더 동기화를 허용하는 앱을 사용할 수도 있습니다. 예를 들어 다음과 같은 앱을 사용할 수 있습니다. - [Dropsync](https://play.google.com/store/apps/details?id=com.ttxapps.dropsync)\\n- [FolderSync](https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite)\\n\\n**Note:** Obsidian은 공용 문서 폴더에서 Obsidian 폴더를 생성합니다. `Documents/Obsidian` 아래의 폴더는 모두 Obsidian 보관소로 간주됩니다. > [!important] Dealing with on-demand cloud storage\\n> 일부 클라우드 스토리지 서비스(예: OneDrive)는 사용할 때만 파일을 다운로드하고 나중에 로컬에서 제거하여 공간을 확보하는 방식으로 작동합니다. 파일이 더 이상 로컬에서 사용할 수 없으므로 Obsidian Sync는 파일이 삭제된 것으로 간주하고 원격 보관소에서 삭제합니다. >\\n>Files On-Demand 및 유사한 기능을 사용하여 Obsidian Sync를 사용하려면 서비스를 항상 파일을 기기에 유지하도록 구성하십시오. \")]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kiwi_bm25_retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 앙상블 리트리버(EnsembleRetriever)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"from langchain.retrievers import EnsembleRetriever\n",
"vectorstore_retriever = vector_store.as_retriever(search_kwargs={\"k\": 20})\n",
"\n",
"kiwi_bm25_retriever.k = 20\n",
"retriever = EnsembleRetriever(\n",
" retrievers=[kiwi_bm25_retriever, vectorstore_retriever],\n",
" weights=[0.6, 0.4],\n",
" search_type=\"mmr\",\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '여러 장치에서 노트 동기화하기.md', 'path': 'obsidian-help/ko/시작하기/여러 장치에서 노트 동기화하기.md', 'created': 1727746136.535341, 'last_modified': 1727746136.535341, 'last_accessed': 1727746143.8404388}, page_content=\"### Why can't I sync using X? 다른 서비스를 파일 동기화에 사용하는 경우가 많고 이를 사용하여 노트를 동기화하려는 경우를 이해합니다. Obsidian은 iOS에서 다른 Markdown 편집기와는 다르게 작동합니다. 1Writer 및 iA Writer와 같은 편집기는 한 번에 한 노트만 액세스하므로 내장된 문서 지원을 사용할 수 있습니다. 반면 Obsidian의 많은 기능은 보관소 전체에 액세스해야 합니다. 예를 들어 파일 이름을 변경하면 Obsidian은 해당 파일에 링크된 보관소의 모든 파일을 업데이트해야 합니다. 지원되지 않는 위치 외부의 수천 개의 노트로 구성된 전체 폴더 구조를 읽고 수정하고 모니터링하는 시스템을 구현하는 것은 복잡합니다. 이 제한 사항을 앞으로 해결할 계획입니다. 개발자라면 각 개별 동기화 서비스에 대한 Web API를 사용하는 플러그인을 빌드할 수 있습니다. ### Where are my vaults stored? 보관소를 만들 때 iCloud Drive를 사용하지 않을 경우 Obsidian은 Obsidian 앱의 로컬 파일 시스템에 저장합니다. 다른 앱인 [[#Working Copy]]과 같은 앱은 파일 시스템에서 보관소를 선택하여 액세스할 수 있습니다. **주의:** 로컬 파일 시스템에 저장된 노트는 Obsidian 앱을 삭제할 때 iOS에서 삭제됩니다. 앱을 삭제하기 전에 노트를 백업해야 합니다. ## Sync notes on Android\\n\\nAndroid 장치에서 노트를 동기화하는 가장 쉬운 방법은 [[Obsidian Sync 소개|Obsidian Sync]]를 사용하는 것입니다. Obsidian은 Android 장치의 로컬 폴더에 노트를 저장하므로 폴더 동기화를 허용하는 앱을 사용할 수도 있습니다. 예를 들어 다음과 같은 앱을 사용할 수 있습니다. - [Dropsync](https://play.google.com/store/apps/details?id=com.ttxapps.dropsync)\\n- [FolderSync](https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite)\\n\\n**Note:** Obsidian은 공용 문서 폴더에서 Obsidian 폴더를 생성합니다. `Documents/Obsidian` 아래의 폴더는 모두 Obsidian 보관소로 간주됩니다. > [!important] Dealing with on-demand cloud storage\\n> 일부 클라우드 스토리지 서비스(예: OneDrive)는 사용할 때만 파일을 다운로드하고 나중에 로컬에서 제거하여 공간을 확보하는 방식으로 작동합니다. 파일이 더 이상 로컬에서 사용할 수 없으므로 Obsidian Sync는 파일이 삭제된 것으로 간주하고 원격 보관소에서 삭제합니다. >\\n>Files On-Demand 및 유사한 기능을 사용하여 Obsidian Sync를 사용하려면 서비스를 항상 파일을 기기에 유지하도록 구성하십시오. \"),\n",
" Document(metadata={'source': 'Obsidian Sync 제한 사항.md', 'path': 'obsidian-help/ko/Obsidian Sync/Obsidian Sync 제한 사항.md', 'created': 1727746136.5297656, 'last_modified': 1727746136.5297656, 'last_accessed': 1727746142.7424438, 'aliases': \"['Limitations', 'Sync limitations', 'Sync FAQ']\"}, page_content='이 페이지는 [[Obsidian Sync 소개|Obsidian Sync]]와 관련된 일반적인 질문과 제한사항들을 나열합니다. ## 일반적인 정보\\n\\n### Obsidian Sync는 어떤 운영 시스템을 지원하나요? Obsidian Sync는 Obsidian이 실행될 수 있는 모든 플랫폼을 지원합니다. 현재 Windows, macOS, Linux, Android, iOS를 지원합니다. ### 제가 사용할 수 있는 저장 용량은 얼마나 되나요? 저장 용량 한도는 구독 중인 Obsidian Sync 플랜에 따라 다릅니다. 최대 저장량은 100GB입니다. 이 저장 용량 한도에는 [[버전 내역|version history]]도 포함됩니다. **Settings → Sync**로 가서 **Storage usage**를 확인할 수 있습니다. ### 원격 볼트는 몇 개까지 가질 수 있나요? Obsidian Sync를 가진 각 계정은 최대 10개의 원격 볼트를 가질 수 있습니다. ### 각 원격 볼트는 얼마나 클 수 있나요? 모든 볼트에 원하는 방식으로 스토리지를 할당할 수 있습니다. ### 각 파일은 얼마나 클 수 있나요? 최대 파일 크기는 파일당 200MB입니다. ### 어떤 유형의 데이터가 동기화되나요? 기본적으로 Obsidian 노트, 이미지, [[설정 폴더|설정 폴더]]가 동기화됩니다. [[동기화할 파일 및 설정 선택|동기화할 파일과 설정을 선택]]할 때 PDF, 오디오 파일, 동영상 파일 및 기타 파일의 동기화 옵션을 추가할 수 있습니다. ### 내 데이터가 백그라운드에서 동기화되고 있나요? 아니요, 파일은 Obsidian이 실행되고 있을 때만 동기화됩니다. ### 원격 볼트를 공유할 수 있는 최대 인원은 몇 명입니까? 최대 10명과 [[공유 보관소에서 협업하기|원격 볼트를 공유]] 할 수 있습니다 . ## 데이터 보존\\n \\nObsidian의 데이터 보존에 대해 자주 묻는 질문입니다.'),\n",
" Document(metadata={'source': '보관소 관리.md', 'path': 'obsidian-help/ko/파일 및 폴더/보관소 관리.md', 'created': 1727746136.5369236, 'last_modified': 1727746136.5369236, 'last_accessed': 1727746143.3503828, 'aliases': \"['User interface/Vault switcher', 'How to/Working with multiple vaults', 'Vault switcher']\"}, page_content='**목록에서 제거**를 선택합니다. ## Transfer settings to another vault\\n\\n다른 보관소에서 동일한 설정을 사용하려면 선호하는 파일 관리자 (또는 터미널)를 사용하여 원본 보관소의 루트에서 `.obsidian` 폴더를 대상 보관소의 루트로 복사하십시오. 변경 사항을 적용하려면 Obsidian을 재시작해야 할 수도 있습니다. > [!note] `.obsidian` 폴더는 어디에서 찾을 수 있나요? > 기본적으로 대부분의 운영 체제는 점 (`.`)으로 시작하는 폴더를 숨깁니다. `.obsidian` 폴더 및 해당 폴더에 액세스하는 방법에 대한 자세한 내용은 [[Obsidian이 데이터를 저장하는 방법#Vault settings]]을 참조하십시오. '),\n",
" Document(metadata={'source': '상업용 라이선스.md', 'path': 'obsidian-help/ko/라이선스 및 결제/상업용 라이선스.md', 'created': 1727746136.5344224, 'last_modified': 1727746136.5344224, 'last_accessed': 1727746142.9014575, 'aliases': \"['Licenses & Payment/Commercial license']\"}, page_content='> [!question]- Q4. 저는 IT 부서에서 일하며 저희 직원들을 위해 상업용 라이센스를 구매해야 합니다. 어떻게 해야 하나요? > Obsidian을 회사에서 사용할 직원 수와 동일한 자리가 있는 Obsidian 상업용 라이센스를 하나 구매하려면 하나의 관리자 계정에 가입하고 라이선스를 구입하세요. > \\n> 라이센스를 구입한 후 라이센스 키가 제공되며 직원들에게 라이센스를 활성화하는 데 사용할 수 있습니다 (활성화 방법은 Q1을 참조). 각 직원이 Obsidian 계정을 가질 필요는 없습니다.'),\n",
" Document(metadata={'source': 'Obsidian Sync 제한 사항.md', 'path': 'obsidian-help/ko/Obsidian Sync/Obsidian Sync 제한 사항.md', 'created': 1727746136.5297656, 'last_modified': 1727746136.5297656, 'last_accessed': 1727746142.7424438, 'aliases': \"['Limitations', 'Sync limitations', 'Sync FAQ']\"}, page_content='더 자세한 답변을 원하면, [[Obsidian Sync/보안 및 개인정보 보호|보안 및 개인 정보 보호]]를 참조하세요. ### 버전 기록은 얼마나 오래 보관되나요? Markdown 파일의 이전 [[버전 내역|버전]]은 1년 동안 저장된 후 삭제됩니다. 첨부 파일의 이전 버전은 2주 동안 저장됩니다. ### 구독이 만료된 후 내 데이터를 얼마나 오래 보관하나요? 구독이 만료된 후 한 달 동안 버전 기록을 포함한 데이터를 원격 저장소에 보관합니다. 장치의 모든 로컬 저장소는 영향을 받지 않습니다. 한 달 이내에 갱신하면 사용에는 영향이 없습니다. 한 달 후에 갱신하는 경우, 원격 볼트가 제거되면 [[Obsidian Sync 설정|새 원격 볼트를 생성하고 로컬 볼트를 다시 연결]]할 수 있습니다 . ### 구독 서비스를 환불하는 경우 내 데이터를 보관하나요?'),\n",
" Document(metadata={'source': '상업용 라이선스.md', 'path': 'obsidian-help/ko/라이선스 및 결제/상업용 라이선스.md', 'created': 1727746136.5344224, 'last_modified': 1727746136.5344224, 'last_accessed': 1727746142.9014575, 'aliases': \"['Licenses & Payment/Commercial license']\"}, page_content='> [!question]- Q5. 비영리 단체는 상업용 라이센스가 필요한가요? > 등록된 비영리 단체는 상업용 라이센스 없이 Obsidian을 사용할 수 있습니다. > [!question]- Q6. 대량 구매 할인이 있나요? > 대량 구매 할인에 대한 자세한 내용은 [[도움말 및 지원#Contact Obsidian support|Obsidian 지원팀에 연락하세요]]. > [!question]- Q7. 회사에 라이센스를 구매하도록 요청하는 방법이 어떻게 되나요? > 회사 IT 부서가 문의 사항이 있거나 특정 서류가 필요한 경우, [[도움말 및 지원#Contact Obsidian support|Obsidian 지원팀에 연락하세요]]. > [!question]- Q8. 상업용 라이센스가 필요한가요? > 저희의 EULA에 따르면 Obsidian을 상업용으로 사용하는 경우 상업용 라이선스를 획득해야 합니다. 상업용 사용은 두 명 이상의 직원을 가진 회사에서 업무 관련 활동에 Obsidian을 사용하는 것으로 정의됩니다. > [!question]- Q9: 작가/블로거인데 상업용 라이센스가 필요한가요? > 작성한 내용이 이익을 얻는 목적으로 사용된다면(예: 광고 또는 후원을 통해 수익을 창출하는 블로그에서 글을 쓰는 경우) 및 귀하의 사업에 두 명 이상의 직원이 있는 경우 상업용 라이센스가 필요합니다. > [!question]- Q10: 저는 개인 프리랜서/컨설턴트인데, 내 작업이 간접적으로 \"두 명 이상의 사람이 속한 회사에서 수익 창출, 업무 관련 활동에 기여\"하는 경우 상업용 라이센스가 필요한가요? > 아니요, 프리랜서/컨설턴트 비즈니스의 단일 직원인 한편으로 남아 있다면 상업용 라이선스가 필요하지 않습니다. > [!question]- Q11: 저는 교사/교수이거나 학교에서 근무하며 교육 활동을 위해 Obsidian을 사용합니다. 상업용 라이센스가 필요한가요? > 학교 및 다른 공인 교육 기관에서 교육 활동을 위해 Obsidian을 사용하는 경우 상업용 라이센스가 필요하지 않습니다. > [!question]- Q12: 저는 학술 연구자이고 연구 작업에 Obsidian을 사용합니다. 상업용 라이센스가 필요한가요? > 귀하의 연구가 상업용 제품을 생산하는 데 관련되는 경우(예: 귀하의 연구가 수익을 창출하는 상업 활동에 기여하는 경우) 귀하의 사용에 대한 상업용 라이센스가 필요합니다. 귀하의 연구가 상업 제품에 기여하지 않거나 연구가 아직 상업 활동으로 이어지지 않은 경우 라이센스가 필요하지 않습니다. > [!question]- Q13: 저는 정부 또는 독립 기관 또는 단체에서 근무하고 있습니다. 상업용 라이센스가 필요한가요? > 예, 상업용 라이센스가 필요합니다. EULA에 따라 Obsidian을 상업적 용도로 사용하는 경우 상업용 라이센스를 취득해야 합니다. 상업적 사용은 \"2명 이상의 직원이 있는 회사에서 업무 관련 활동\"을 위해 Obsidian을 사용하는 것으로 정의됩니다. EULA의 수익 창출 조항은 비영리 조직을 면제합니다. > [!question]- Q14:팀 프로세스를 작성하고 팀 회의 노트를 작성하는 데 Obsidian을 사용합니다. 상업용 라이센스가 필요한가요?'),\n",
" Document(metadata={'source': 'Obsidian.md', 'path': 'obsidian-help/ko/Obsidian/Obsidian.md', 'created': 1727746136.5312953, 'last_modified': 1727746136.5312953, 'last_accessed': 1727746142.699815}, page_content=\"그러나 그 진정한 강점은 밀도 높은 네트워크로 연결된 지식 베이스를 관리하는 데 있습니다. 네트워크를 어떻게 만들기 시작해야 할지 궁금하십니까? 먼저 몇 개의 [[내부 링크|내부 링크]]를 만들어 보는 것부터 시작합시다! ## How we're different\\n\\n### You own and control your data\\n\\n우리는 지식 베이스와 같이 중요한 것에 대해 평문 텍스트를 믿습니다. 자신의 두뇌를 다른 사람의 목에 걸고 싶지 않으시겠죠?\"),\n",
" Document(metadata={'source': 'Bear에서 노트 가져오기.md', 'path': 'obsidian-help/ko/노트 가져오기/Bear에서 노트 가져오기.md', 'created': 1727746136.532793, 'last_modified': 1727746136.532793, 'last_accessed': 1727746142.7640424, 'permalink': 'import/bear'}, page_content='Obsidian을 사용하면 Bear에서 노트를 쉽게 마이그레이션할 수 있습니다. 이를 위해서 [[Importer|Importer 플러그인]]을 사용합니다. ## Export your data from Bear\\n\\nObsidian은 Bear의 백업 형식인 `.bear2bk` 파일을 사용합니다. Bear의 백업을 생성하는 방법은 [Bear 웹사이트](https://bear.app/faq/backup-restore/)에서 확인할 수 있습니다. 1. Bear를 엽니다. 2. 백업 생성\\n - macOS에서: **파일** → **노트 백업**. - iOS에서: 사이드바 상단에서 더 많은 메뉴 (⋮)를 클릭하고 **모든 노트 백업**을 선택합니다. 3. 백업 파일을 저장할 위치를 선택합니다. 4. **노트 내보내기(Export notes)** 를 클릭합니다. 5. 이제 모든 노트를 포함하는 하나의 `.bear2bk` 파일이 있어야 합니다. ## Import your Bear data into Obsidian\\n\\nObsidian에서 Bear 데이터를 가져오려면 공식 Obsidian [[Importer]] 플러그인이 필요하며, 이를 [여기에서 설치](obsidian://show-plugin?id=obsidian-importer)할 수 있습니다. 1.'),\n",
" Document(metadata={'source': 'Obsidian URI.md', 'path': 'obsidian-help/ko/Obsidian 확장/Obsidian URI.md', 'created': 1727746136.5306704, 'last_modified': 1727746136.5306704, 'last_accessed': 1727746142.6785853, 'aliases': 'Using Obsidian URI'}, page_content='[자세한 내용은 여기를 참조하십시오](https://en.wikipedia.org/wiki/Percent-encoding). ## Register Obsidian URI\\n\\nWindows 및 macOS에서 앱을 한 번 실행하면 컴퓨터에 Obsidian URI 프로토콜을 등록하는 데 충분합니다. Linux의 경우, 더 복잡한 프로세스입니다:\\n\\n1. `obsidian.desktop` 파일을 만들어야 합니다. [자세한 내용은 여기를 참조하십시오](https://developer.gnome.org/documentation/guidelines/maintainer/integrating.html#desktop-files). 2. 데스크톱 파일에서 `Exec` 필드를 `Exec=executable %u`로 지정해야합니다. `%u`는 `obsidian://` URI를 앱에 전달하기 위해 사용됩니다. 3. AppImage 설치 프로그램를 사용하는 경우, `Obsidian-x.y.z.AppImage --appimage-extract`를 사용하여 압축을 풀어야할 수 있습니다. 그런 다음 `Exec` 지시문이 압축을 푼 실행 파일을 가리키도록해야합니다. ## Open notes\\n\\nObsidian 보관소를 열거나 해당 보관소 내의 파일을 엽니다. ### Examples\\n\\n- `obsidian://open?vault=my%20vault` 이 명령은 `my vault` 보관소를 엽니다. 이미 보관소가 열려있으면 해당 창에 중점을 둡니다. - `obsidian://open?vault=ef6ca3e3b524d22f` 이 명령은 ID `ef6ca3e3b524d22f`로 식별된 보관소를 엽니다. - `obsidian://open?vault=my%20vault&file=my%20note` 이 명령은 파일이 있는 경우 `my vault` 보관소에서 노트 `my note.md`를 엽니다. - `obsidian://open?path=%2Fhome%2Fuser%2Fmy%20vault%2Fpath%2Fto%2Fmy%20note` 이 명령은 파일이 어떤 보관소에 있는지 검색합니다. 그런 다음 나머지 경로는 `file` 매개 변수로 전달됩니다. 예를 들어, `/home/user/my vault`에 보관소가 있으면 이것은 `file` 매개 변수가 `path/to/my note`로 설정된 것과 같습니다. > [!tip] 헤딩 또는 블록 열기\\n> 올바른 URI 인코딩을 사용하면 노트 내의 헤딩이나 블록으로 이동할 수 있습니다. `Note%23Heading`는 \"Heading\"이라고 불리는 헤딩으로 이동하고 `Note%23%5EBlock`은 \"Block\"이라고 불리는 블록으로 이동합니다. ### Parameters\\n\\n- `vault`는 보관소 이름 또는 보관소 ID[^1] 일 수 있습니다. - `file`는 파일 이름 또는 지정된 파일까지의 보관소 루트로의 경로입니다. 파일 확장자가 `md` 인 경우 확장자를 생략할 수 있습니다. - `path`는 파일 시스템의 절대 경로입니다. - 이 매개 변수를 사용하면 `vault` 및 `file` 모두 무시됩니다. - 이것은 앱이 지정된 파일 경로를 포함하는 가장 구체적인 보관소를 검색하게 합니다. - 그런 다음 경로의 나머지 부분이 `file` 매개 변수를 대체합니다. ## Open search\\n\\n이 Obsidian URI 엔드포인트는 지정된 보관소에서 [[검색|검색]]을 열고 선택적으로 검색 쿼리를 수행합니다. ### Examples\\n\\n- `obsidian://search?vault=my%20vault`\\n 이 명령은 `my vault` 보관소를 열고 [[검색|검색]]을 엽니다. - `obsidian://search?vault=my%20vault&query=Obsidian`\\n 이 명령은 `my vault` 보관소를 열고 [[검색|검색]]을 열고 `Obsidian`에 대한 검색을 수행합니다. ### Parameters\\n\\n- `vault`는 보관소 이름 또는 보관소 ID[^1] 일 수 있습니다. `open` 작업과 동일합니다.'),\n",
" Document(metadata={'source': '그래프 뷰.md', 'path': 'obsidian-help/ko/플러그인/그래프 뷰.md', 'created': 1727746136.538966, 'last_modified': 1727746136.538966, 'last_accessed': 1727746143.4945745}, page_content='2. 검색 상자에 그룹에 추가할 노트를 위한 검색 쿼리를 입력하세요. 3. 그룹에 색상을 지정하려면 색상 원을 클릭하세요. 더 고급 검색 쿼리를 작성하는 방법을 알아보려면 [[검색|검색]]를 참조하세요. ### Display\\n\\n이 섹션은 그래프에서 노드 및 링크를 시각화하는 방법을 제어합니다. - **화살표**(Arrows)는 각 링크의 방향을 표시할지 여부를 전환합니다. - **텍스트 페이드 임계값**(Text fade threshold)은 각 노트의 이름에 대한 텍스트 투명도를 제어합니다. - **노드 크기**(Node size)는 각 노트를 나타내는 원의 크기를 제어합니다.'),\n",
" Document(metadata={'source': '보안 및 개인정보 보호.md', 'path': 'obsidian-help/ko/Obsidian Sync/보안 및 개인정보 보호.md', 'created': 1727746136.5303314, 'last_modified': 1727746136.5303314, 'last_accessed': 1727746142.6740575, 'aliases': \"['Security/privacy for Obsidian Sync', 'Access control for Obsidian Sync']\"}, page_content='이 선택은 원격 보관소에만 영향을 미칩니다. Obsidian은 로컬 보관소를 암호화하지 않습니다. ## What does end-to-end encryption mean? End-to-end encryption은 데이터가 기기를 떠나는 순간부터 당신의 기기 중 하나로 돌아올 때까지 암호화되며, 암호화 키를 사용해 해독할 수 있는 것을 의미합니다. 우리는 당신의 데이터를 읽을 수 없습니다.'),\n",
" Document(metadata={'source': 'Obsidian.md', 'path': 'obsidian-help/ko/Obsidian/Obsidian.md', 'created': 1727746136.5312953, 'last_modified': 1727746136.5312953, 'last_accessed': 1727746142.699815}, page_content='두 번째 두뇌를 동일하게 다루세요. 동기화는 여러 기기에서 작업을 용이하게 하는 유틸리티에 불과하며, 데이터는 항상 기본적으로 하드 디스크에 저장됩니다. 파일 시스템이 클라우드를 대체할 때 파일을 다루는 유연한 옵션을 제공받게 됩니다. Dropbox로 백업을 만들 수 있고, 버전 관리를 위해 Git를 사용하거나 디스크를 암호화하여 보안을 강화할 수 있습니다. 파일 시스템에서 작동하는 것은 Obsidian 지식 베이스에서도 작동합니다. ### Links are first-class citizens\\n\\n링크와 연결은 우리가 아는 것들 사이의 관계를 발견하는 데 중요합니다. Obsidian은 이를 크게 가치 있게 여기며 [[내부 링크|내부 링크]] 및 [[그래프 뷰|그래프 보기]]를 통해 이를 촉진합니다. 존 록은 다음과 같이 말합니다... > 단순한 생각에 힘을 발휘하는 마음의 행위는 주로 다음 세 가지이다:\\n>\\n> 1. 여러 간단한 아이디어를 하나의 복합 아이디어로 결합시키고, 이렇게 모든 복잡한 아이디어가 만들어집니다. > 2. 두 번째는 간단한 아이디어든 복잡한 아이디어든 둘을 함께 가져와 서로 놓아서 한 번에 그들을 볼 수 있게 만드는 것이며, 그들을 하나로 합치지 않고 관계의 아이디어를 얻는 방법입니다. > 3. 세 번째는 그들을 그들의 실제 존재에서 동반하는 다른 아이디어에서 분리하는 것입니다. 이것을 추상화라고 하며, 이것이 모든 일반 아이디어를 만드는 방법입니다. \\\\- 존 록, 『인간 이해에 관한 에세이』 (1690)\\n\\n계층 구조는 우리에게 1번을 제공하고, 링킹은 2번을 제공합니다. 노트 작성과 관련해서 3번이 무엇을 의미하는지에 대해서는 아직 확실하지 않지만, 프로그래밍이나 매크로와 관련이 있을 수 있습니다. ### Your own toolkit\\n\\n노트 작성은 매우 개인적인 활동입니다. 당연히 모든 사람을 위한 단일한 솔루션이 없습니다. [[Obsidian]]는 사용자에게 의견을 갖추고 조립된 제품 대신 자신만의 솔루션을 발견하고 만들 수 있는 기반과 다양한 기능적인 빌딩 블록을 제공합니다. 기반은 파일을 보고, 편집하고 검색할 수 있는 것입니다. 미니멀리스트를 위해서는 그게 충분합니다. 거기에 추가하여, 독립적인 빌딩 블록을 추가하여 노트 작성에 기능을 추가할 수 있습니다:\\n\\n- 수업 노트를 작성 중이라면 [[오디오 레코더|오디오 녹음기]]와 LaTeX 수학이 유용할 것입니다. - 업무 노트를 작성 중이라면 [[슬라이드|슬라이드]]와 [[백링크|백링크]]가 유용할 것입니다. - 연구자라면 [[그래프 뷰|그래프 뷰]]와 [[단어 개수|단어 개수]]가 도구상자에 필수적일 것입니다. 우리는 플러그인이 모든 문제를 해결하는 만병통치약이 될 것이라고 기대하지는 않지만, 인터페이스를 복잡하게 만들 필요가 없는 모든 기능 없이 단일체 솔루션보다 더 가까워졌습니다. 우리는 [[CSS 스니펫|CSS 스니펫]], [[테마|테마]], 그리고 [[커뮤니티 플러그인|커뮤니티 플러그인]]을 지원하여 인터페이스를 더 많이 사용자 정의하고 일반적이지 않은 사용 사례를 지원합니다. ## Follow our development\\n\\nObsidian을 최고이며 가장 정제된 생각 처리 도구로 만드는 방법이 궁금하신가요? 우리가 어떤 작업을 하고 있는지 확인하려면 [로드맵](https://obsidian.md/roadmap/)을 확인하세요. 저희의 Twitter 핸들은 [@obsdmd](https://twitter.com/obsdmd)이며, 언제든지 팔로우하실 수 있습니다. 주로 제품 업데이트에 관한 트윗을 합니다. '),\n",
" Document(metadata={'source': '노트 관리.md', 'path': 'obsidian-help/ko/파일 및 폴더/노트 관리.md', 'created': 1727746136.536855, 'last_modified': 1727746136.536855, 'last_accessed': 1727746143.342849, 'aliases': \"['Advanced topics/Deleting files', 'How to/Rename notes']\"}, page_content='새 이름을 입력하고 `Enter`를 누릅니다. 파일 이름을 변경하면 Obsidian은 해당 파일로의 모든 링크를 자동으로 업데이트합니다. [[파일 탐색기#Rename a file or folder|파일 탐색기]]를 사용하여 파일 또는 폴더의 이름을 열지 않고도 이름을 변경할 수도 있습니다. ## Delete a note\\n\\n노트를 삭제하려면 활성화된 노트의 오른쪽 상단에서 **더보기 옵션 → 파일 삭제**(More options -> Delete file)를 선택합니다. 또는 [[명령어 팔레트|명령어 팔레트]]에서 **현재 파일 삭제**(Delete current file)를 선택합니다. [[파일 탐색기#Delete a file or folder|파일 탐색기]]를 사용하여 노트나 폴더를 삭제할 수도 있습니다. > [!note] 파일을 삭제한 후에는 어떻게 되나요? > 삭제된 파일의 처리 방법을 변경하려면 **설정 → 파일 및 링크**(Settings → Files & Links) 아래에서 다음 옵션 중 하나를 선택하세요:\\n> - **시스템 휴지통**: 기본적으로 삭제된 파일은 운영 체제의 시스템 휴지통에 저장됩니다. 파일을 복원하려면 기호에 따른 파일 관리자를 사용하세요. > - **Obsidian 휴지통**: 삭제된 파일을 vault 내 `.trash` 폴더로 보낼 수 있습니다. > - **영구 삭제**: 파일은 복원할 수 있는 방법 없이 즉시 삭제됩니다.'),\n",
" Document(metadata={'source': '그래프 뷰.md', 'path': 'obsidian-help/ko/플러그인/그래프 뷰.md', 'created': 1727746136.538966, 'last_modified': 1727746136.538966, 'last_accessed': 1727746143.4945745}, page_content='- 선은 두 노드 간의 [[내부 링크|내부 링크]]를 나타냅니다. 특정 노드를 참조하는 노드가 많을수록 해당 노드는 더 커집니다. 그래프에서 노트와 상호 작용하려면 다음을 수행하세요:\\n\\n- 각 원 위로 마우스를 가져가면 해당 노트의 연결을 강조 표시할 수 있습니다. - 그래프에서 노트를 클릭하여 해당 노트를 열 수 있습니다. - 노트를 마우스 오른쪽 버튼으로 클릭하여 해당 노트에 대한 가능한 작업이 포함된 컨텍스트 메뉴를 열 수 있습니다. 그래프 내에서 이동하는 방법:\\n\\n- 마우스 스크롤 휠을 사용하거나 `+` 및 `-` 키를 사용하여 확대 및 축소할 수 있습니다. - 마우스 커서로 그래프를 드래그하거나 화살표 키를 사용하여 그래프를 이동할 수 있습니다. 키보드 사용 시 이동 속도를 높이려면 Shift 키를 누르세요. ## Settings\\n\\n그래프 설정을 열려면 그래프 뷰의 왼쪽 상단에 있는 톱니바퀴 아이콘을 클릭하세요. 설정 상자 오른쪽 상단에 있는 **기본 설정으로 복원**(Restore default settings)을 클릭하여 적용한 변경 사항을 초기화할 수 있습니다. ### Filters\\n\\n이 섹션은 그래프에 표시할 노드를 제어합니다. - **파일 검색**은 검색 쿼리를 기반으로 노트를 필터링할 수 있습니다. 더 고급 검색 쿼리를 작성하는 방법을 알아보려면 [[검색|검색]]를 참조하세요. - **태그**(Tags)는 그래프에 태그를 표시할지 여부를 전환합니다. - **첨부 파일**(Attachments)은 그래프에 첨부 파일을 표시할지 여부를 전환합니다. - **기존 파일만**(Existing files only)은 보관 중인 노트만 표시할지 여부를 전환합니다. 노트에 링크를 걸 때 노트가 실제로 존재하지 않아도 된다는 점을 감안하면 이 옵션을 사용하여 보관 중인 노트로 그래프를 제한하는 데 도움이 될 수 있습니다. - **고아**(Orphans)는 링크가 없는 노트를 표시할지 여부를 전환합니다. ### Groups\\n\\n색상을 사용하여 서로 구분하기 위해 노트 그룹을 만듭니다. 새 그룹을 만드는 방법:\\n\\n1. **새 그룹**(New group)을 클릭하세요.'),\n",
" Document(metadata={'source': 'Obsidian URI.md', 'path': 'obsidian-help/ko/Obsidian 확장/Obsidian URI.md', 'created': 1727746136.5306704, 'last_modified': 1727746136.5306704, 'last_accessed': 1727746142.6785853, 'aliases': 'Using Obsidian URI'}, page_content='Obsidian URI는 Obsidian에서 지원하는 사용자 정의 URI 프로토콜로, 노트를 열거나 생성하는 것과 같은 다양한 작업을 트리거할 수 있게 해줍니다. 이것은 주로 macOS 및 모바일 앱에서 자동화 및 앱 간 워크플로를 위해 사용됩니다. Obsidian URI는 일반적으로 다음 형식을 따릅니다:\\n\\n```\\nobsidian://action?param1=value&param2=value\\n```\\n\\n`action` 매개 변수는 수행하려는 작업입니다. > [!warning] 인코딩\\n> 값이 올바르게 URI 인코딩되었는지 확인하십시오. 예를 들어, 슬래시 문자 `/`는 `%2F`로 인코딩해야하며 공백 문자는 `%20`으로 인코딩해야합니다. > \\n> 이것은 특히 \"예약\" 문자가 제대로 인코딩되지 않으면 URI 해석이 깨질 수 있기 때문에 중요합니다.'),\n",
" Document(metadata={'source': '상업용 라이선스.md', 'path': 'obsidian-help/ko/라이선스 및 결제/상업용 라이선스.md', 'created': 1727746136.5344224, 'last_modified': 1727746136.5344224, 'last_accessed': 1727746142.9014575, 'aliases': \"['Licenses & Payment/Commercial license']\"}, page_content='\\nObsidian을 두 명 이상의 직원을 가진 회사에서 상업적으로 사용하는 경우 상업용 라이선스를 구입해야 합니다. 상업용 사용은 다음과 같은 작업과 관련이 있지만 이에 국한되지는 않습니다:\\n\\n- 회의록\\n- 팀용 프로젝트 노트\\n- 조직 위키\\n\\n다음 중 하나에 해당하는 경우 상업용 라이선스가 필요하지 않습니다:\\n\\n- 학교 및 공인 교육 기관\\n- 비상업적 연구\\n- 비영리 단체\\n- 프리랜서 또는 개인 업체\\n\\n상업용으로 Obsidian을 14일 동안 평가할 수 있습니다. 평가하는 동안 결제할 필요가 없습니다. 상업용 라이선스를 구매하려면 [가격 페이지](https://obsidian.md/pricing)를 방문하세요. 대량 구매에 대해서는 [[도움말 및 지원|Obsidian 지원팀과 연락하세요]]. ### FAQ\\n\\n> [!question]- Q1. 상업용 라이센스를 어떻게 활성화하나요? > 상업용 라이센스를 **설정 → Obsidian 정보 → 상업 라이센스**에서 활성화할 수 있습니다. > [!question]- 결제하기 전에 Obsidian을 상업용으로 사용해볼 수 있나요? > 네, Obsidian을 상업용으로 14일 동안 평가할 수 있습니다. >\\n> 평가하는 동안 결제할 필요가 없습니다.'),\n",
" Document(metadata={'source': '교육 및 비영리 단체 할인.md', 'path': 'obsidian-help/ko/라이선스 및 결제/교육 및 비영리 단체 할인.md', 'created': 1727746136.5343075, 'last_modified': 1727746136.5343075, 'last_accessed': 1727746142.8748307, 'aliases': \"['Student and non-profit discount', 'Licenses & Payment/Education and non-profit discount']\"}, page_content='누가 자격이 있나요? > 대학교 또는 고등학교와 같은 교육 기관의 학생 또는 교직원인 경우 일반적으로 교육 할인을 받을 수 있습니다. >\\n> 비영리 단체를 운영하거나 그런 단체에서 근무하고 있는 경우 일반적으로 비영리 단체 할인을 받을 수 있습니다. > [!FAQ]- Q4. 내 교육 기관이나 비영리 단체가 이메일 주소를 제공하지 않으면 어떻게 하나요? > 이 경우 학생증, 수강증명서 또는 직원증을 포함하여 기타 확인 양식을 [[도움말 및 지원#Contact Obsidian support|Obsidian 지원팀에 제출할 수 있습니다]]. Obsidian 계정 이메일 주소를 포함해야 합니다. > \\n> 저희 팀이 신청서를 검토하고 연락드릴 것입니다. 인내와 이해에 감사드립니다! > [!FAQ]- Q5. 할인 자격이 있는데 이미 지불했습니다. 환불 받을 수 있나요? > 할인이 제공되지 않았거나 할인에 대해 알지 못했기 때문에 일부 사용자가 할인 없이 Sync 또는 Publish를 구입한 경우로 이해됩니다. >\\n> 유감스럽게도 이러한 경우에는 환불을 제공하지 않습니다. 이해해 주셔서 감사합니다. >\\n> 좋은 소식은 미래 갱신에는 유효한 할인이 있는 한 할인이 자동으로 적용될 것입니다. '),\n",
" Document(metadata={'source': '백링크.md', 'path': 'obsidian-help/ko/플러그인/백링크.md', 'created': 1727746136.5394652, 'last_modified': 1727746136.5394652, 'last_accessed': 1727746143.5159373, 'aliases': \"['How to/Working with backlinks']\"}, page_content='## Show backlinks\\n\\nBacklinks 플러그인은 활성 탭의 백링크를 표시합니다. 두 가지 접는 섹션이 있습니다: **링크된 언급**과 **링크되지 않은 언급**. - **링크된 언급**은 활성 노트에 대한 내부 링크를 포함하는 노트로의 백링크입니다. - **링크되지 않은 언급**은 활성 노트의 이름이 나타난 어떠한 내부 링크되지 않은 발생에 대한 백링크입니다. 다음 옵션을 제공합니다:\\n\\n- **결과 접기**는 각 노트를 확장하여 언급 내용을 표시할지 여부를 전환합니다. - **더 많은 맥락 표시**는 언급을 포함하는 전체 단락을 자르거나 표시할지 여부를 전환합니다. - **정렬 순서 변경**은 언급을 어떻게 정렬할지 결정합니다. - **검색 필터 표시**는 언급을 필터링하는 데 사용되는 텍스트 필드를 전환합니다. 검색 쿼리를 작성하는 방법에 대한 자세한 정보는 [[검색|검색]]를 참조하십시오. ## View backlinks for a note\\n\\n활성 노트의 백링크를 보려면 오른쪽 사이드바의 **백링크** (링크와 화살표 아이콘) 탭을 클릭하십시오. > [!note]\\n> 백링크 탭을 볼 수 없다면, [[명령어 팔레트|명령어 팔레트]]를 열고 **백링크: 백링크 표시** 명령을 실행하여 표시할 수 있습니다. ## See backlinks of a specific note\\n\\n백링크 탭은 활성 노트의 백링크를 나열하고, 다른 노트로 전환할 때 업데이트됩니다. 특정 노트의 백링크를 보려면 해당 노트가 활성 노트인지 여부에 관계없이 _연결된_ 백링크 탭을 열 수 있습니다. 연결된 백링크 탭을 열려면:\\n\\n1. [[명령어 팔레트|명령어 팔레트]]를 엽니다. 2.'),\n",
" Document(metadata={'source': '기본 서식 구문.md', 'path': 'obsidian-help/ko/편집 및 서식 지정/기본 서식 구문.md', 'created': 1727746136.5375443, 'last_modified': 1727746136.5375443, 'last_accessed': 1727746143.3936386, 'aliases': \"['How to/Format your notes', 'Markdown']\"}, page_content='- [ ] 이 항목은 완료되지 않았습니다. ```\\n\\n- [x] 이 항목은 완료되었습니다. - [ ] 이 항목은 완료되지 않았습니다. 읽기 보기에서 체크 박스를 선택하여 작업 목록을 토글할 수 있습니다. > [!tip]\\n> 완료되었다는 표시를 위해 대괄호 내에 어떤 문자든 사용할 수 있습니다. >\\n> ```md\\n> - [x] 우유\\n> - [?] 달걀\\n> - [-] 달걀\\n> ```\\n>\\n> - [x] 우유\\n> - [?] 달걀\\n> - [-] 달걀\\n\\n## Horizontal bar\\n\\n수평선을 추가하려면 `***`, `---`, 또는 `_ _ _` 세 개 이상의 별표, 하이픈 또는 밑줄을 자체 행에 넣습니다. 또한 기호 사이에 공백을 넣을 수 있습니다. ```md\\n***\\n****\\n* * *\\n---\\n----\\n- - -\\n___\\n____\\n_ _ _\\n```\\n\\n***\\n\\n---\\n\\n## Footnotes\\n\\n다음과 같은 구문을 사용하여 노트에 각주[^각주]를 추가할 수 있습니다:\\n\\n[^각주] 이것은 각주입니다. ```md\\n이것은 간단한 각주[^1]입니다. [^1]: 이것은 참조된 텍스트입니다. [^2]: 각 새로운 줄에서 2개의 공백을 추가합니다. 이렇게 하면 여러 줄에 걸친 각주를 작성할 수 있습니다. [^note]: 이름이 지정된 각주는 숫자로 나타나지만 식별과 참조가 더 쉬울 수 있습니다. ```\\n\\n문장에 각주를 삽입할 수도 있습니다. 윗꺽쇠은 괄호 바깥으로 나갑니다. ```md\\n인라인 각주를 사용할 수도 있습니다. ^[이것은 인라인 각주입니다.]\\n```\\n\\n> [!note]\\n> 인라인 각주는 읽기보기 모드에서만 작동하며 라이브 미리보기에서는 작동하지 않습니다. ## Comments\\n\\n텍스트를 `%%`로 둘러싸서 주석을 추가할 수 있습니다. 주석은 편집 보기에서만 볼 수 있습니다. ```md\\n이것은 %%인라인%% 주석입니다. %%\\n이것은 블록 주석입니다. 블록 주석은 여러 줄에 걸칠 수 있습니다. %%\\n```\\n\\n## Learn more\\n\\n표, 다이어그램, 수학 표현식 등 고급 서식 구문에 대해 알아보려면 [[고급 서식 구문|고급 서식 구문]]을 참조하세요. Obsidian이 Markdown을 구문 분석하는 방법에 대해 자세히 알아보려면 [[Obsidian 마크다운]]을 참조하세요. '),\n",
" Document(metadata={'source': '보안 및 개인정보 보호.md', 'path': 'obsidian-help/ko/Obsidian Sync/보안 및 개인정보 보호.md', 'created': 1727746136.5303314, 'last_modified': 1727746136.5303314, 'last_accessed': 1727746142.6740575, 'aliases': \"['Security/privacy for Obsidian Sync', 'Access control for Obsidian Sync']\"}, page_content='당신의 인터넷 서비스 제공업체와 같은 잠재적인 도청자도 데이터를 읽을 수 없습니다. 완전한 서버 침입의 드문 경우에도 데이터는 암호화된 채로 남아 있으며 암호를 알지 못하는 한 아무도 파일을 해독할 수 없습니다. ## What encryption do you use? 우리는 업계 표준 AES-256을 사용하여 데이터를 암호화합니다. AES-256은 온라인 뱅킹 등에서 널리 사용되는 군용 암호화 사양입니다. 여기에는 다음과 같은 기술적인 세부 정보가 포함되어 있습니다. - Key derivation function used: scrypt with salt\\n- Encryption algorithm used: AES-256 using GCM\\n\\n## What happens if I forget my encryption password? 암호화 암호를 잃거나 잊어버릴 경우 원격 보관소에 추가 보관소를 연결할 수 없게 됩니다. 암호화 암호가 어디에도 저장되지 않기 때문에 영원히 잃어버립니다. 그러나 귀하의 데이터는 일반적으로 각 장치에 로컬로 안전하게 저장됩니다. Obsidian Sync를 계속 사용하려면 새로운 장치를 Sync 시스템에 추가할 수 있도록 전체 설정을 다시 해야합니다:\\n\\n1. 주 기기에서 완전한 보관소 백업을 만들어 안전하게 보관합니다. 이는 보관소 폴더의 사본을 만들거나 보관소에서 zip 파일을 만드는 것만으로도 간단하게 할 수 있습니다. 2. 각 기기에서 원격 보관소를 연결 해제합니다. 이 작업은 **설정 → 동기화 → 원격 보관소 선택 → 연결 해제**로 수행할 수 있습니다. 3. 같은 **설정** 페이지에서 주 기기에서 새로운 원격 보관소를 만듭니다. 원격 보관소의 암호를 잊어버렸기 때문에 이전 원격 보관소를 삭제해도 됩니다. (보관소 한계에 도달한 경우 이전 원격 보관소를 삭제해야 할 수도 있음)\\n4. 주 기기가 동기화되기를 기다립니다. 화면 오른쪽 아래의 동기화 표시를 확인하여 녹색 확인 표시가 표시될 때까지 기다립니다. 5. 각 기기를 새로 만든 원격 보관소에 연결합니다. 연결할 때 보관소 병합에 대한 경고가 표시됩니다. 이는 예상된 동작이므로 계속 진행하실 수 있습니다. 각 기기가 완전히 동기화될 때까지 기다립니다. 이렇게 하면 문제가 발생할 가능성이 줄어듭니다.'),\n",
" Document(metadata={'source': '첫 노트 만들기.md', 'path': 'obsidian-help/ko/시작하기/첫 노트 만들기.md', 'created': 1727746136.5357163, 'last_modified': 1727746136.5357163, 'last_accessed': 1727746143.2059207, 'aliases': 'How to/Create notes'}, page_content='\\nObsidian에서 노트는 일반 텍스트 파일로 저장되므로 이동성이 뛰어납니다. 노트를 일반 텍스트로 작성하면 Obsidian 자체를 포함하여 어떤 앱이던간에 노트가 오랜 시간 동안 보존될 수 있습니다. 노트를 장기적으로 보관하려는 계획이 있다면 이것은 좋은 소식입니다! ## Create a new note\\n\\n새로운 노트를 작성하려면 다음 단계를 따르세요:\\n\\n1. 키보드에서 `Ctrl+N` (또는 macOS에서는 `Cmd+N`)을 누르세요. 2. \"Obsidian\"을 노트 이름으로 입력하고 `Enter` 키를 누르세요. 3. 다음 텍스트를 노트에 복사하여 붙여넣으세요:\\n\\n> \"Obsidian은 일반 텍스트 마크다운(Markdown) 파일로 이루어진 로컬 폴더 위에 구축된 강력한 지식 베이스입니다.\"\\n\\n## Format your note\\n\\nObsidian은 [마크다운(Markdown)](https://en.wikipedia.org/wiki/Markdown)도 지원합니다. 이는 일반 텍스트 파일에 서식을 추가하는 데 사용되는 마크업 언어입니다. 1. 다음 텍스트를 Obsidian 노트의 맨 위에 복사하여 붙여넣으세요:\\n\\n > \\\\# 두 번째 뇌, 영원한 당신을 위해. 해시태그 (`#`)는 텍스트 행을 제목으로 변환합니다.'),\n",
" Document(metadata={'source': 'Obsidian Sync 소개.md', 'path': 'obsidian-help/ko/Obsidian Sync/Obsidian Sync 소개.md', 'created': 1727746136.5296974, 'last_modified': 1727746136.5296974, 'last_accessed': 1727746143.3155391, 'aliases': \"['Obsidian Sync']\"}, page_content='\\n[Obsidian Sync](https://obsidian.md/sync)는 Obsidian의 서버에 노트를 저장하고 여러 기기 간에 동기화할 수 있게 해주는 클라우드 기반 서비스입니다. > [!important]\\n> Obsidian Sync를 Dropbox, Google Drive 또는 OneDrive와 같은 다른 클라우드 스토리지 공급자와 함께 사용하는 경우, [[Obsidian Sync and third-party services]]를 참조하여 동기화 충돌을 피하세요. Obsidian Sync에 대해 자세히 알아보세요:\\n\\n- Obsidian Sync 사용자가 처음이라면 [[Obsidian Sync 설정]] 방법을 배워보세요. - 무엇을 동기화할지 구성하려면 [[동기화할 파일 및 설정 선택]]를 참조하세요. - 다른 기기에서 Obsidian Sync를 설정하는 방법을 알고 싶다면 [[다른 기기에서 Obsidian Sync 동기화 설정]]을 참조하세요. - 노트의 이전 버전을 보거나 복원하는 방법을 알고 싶다면 [[버전 내역|버전 내역]]를 참조하세요. - 노트를 안전하게 보호하는 방법을 알고 싶다면 [[Obsidian Sync/보안 및 개인정보 보호|보안과 프라이버시]]를 참조하세요. - 본인의 보관소를 백업하는 데 다른 서드파티 서비스를 사용하려면 [[Obsidian Sync and third-party services]]를 참조하세요. - Obsidian Sync에 문제가 있는 경우 [[Obsidian Sync 트러블슈팅]]을 참조하세요.'),\n",
" Document(metadata={'source': 'Obsidian이 데이터를 저장하는 방법.md', 'path': 'obsidian-help/ko/파일 및 폴더/Obsidian이 데이터를 저장하는 방법.md', 'created': 1727746136.5367057, 'last_modified': 1727746136.5367057, 'last_accessed': 1727746143.3396165, 'aliases': 'Advanced topics/How Obsidian stores data'}, page_content='\\nObsidian은 노트를 [[기본 서식 구문|마크다운]]형식으로 서식 지정된 일반 텍스트 파일로 _보관소_라고 하는 로컬 파일 시스템의 폴더에 저장합니다. \\'보관소\\'는 로컬 파일 시스템의 폴더로서 하위 폴더를 포함합니다. 노트는 일반 텍스트 파일이므로 다른 텍스트 편집기와 파일 관리자를 사용하여 노트를 편집하고 관리할 수 있습니다. Obsidian은 외부 변경 사항을 반영하기 위해 \\'보관소\\'를 자동으로 새로 고칩니다. Obsidian은 운영 체제가 허용하는 어느 곳에서나 \\'보관소\\'를 생성할 수 있습니다. Obsidian은 Dropbox, iCloud, OneDrive, Git 및 기타 다양한 제3자 서비스와 동기화할 수 있습니다. 업무 및 개인용 노트를 분리하기 위해 여러 폴더를 개별 \\'보관소\\'로 열 수 있습니다. > [!warning] 보관소내의 보관소(Vaults within vaults)\\n> [[내부 링크|내부링크]]는 \\'보관소\\' 내부로 한정되기 때문에 \\'보관소\\' 내부에 다른 \\'보관소\\'를 생성하지 않는 것을 권장합니다. 링크가 올바르게 업데이트되지 않을 수 있습니다. ## Vault settings\\n\\n\"Obsidian은 \\'보관소\\'의 루트 폴더에 `.obsidian` 폴더를 생성합니다. 이 폴더에는 해당 \\'보관소\\'에 특정한 설정, 예를 들어 [[유저 인터페이스/단축키|사용자 지정 단축키]], [[테마|테마]], 그리고 [[커뮤니티 플러그인|커뮤니티 플러그인]]와 같은 내용이 포함됩니다.\"\\n\\n기본적으로 대부분의 운영 체제에서는 점(`.`)으로 시작하는 폴더를 숨깁니다. 따라서 해당 폴더를 볼 수 있도록 파일 관리자의 설정을 업데이트해야 할 수 있습니다. - **macOS**: Finder에서 숨겨진 파일을 보려면 `Cmd+Shift+.` (마침표)를 누르세요. - **Windows**: [숨김 파일 표시하기](https://support.microsoft.com/ko-kr/windows/%EC%88%A8%EA%B9%80-%ED%8C%8C%EC%9D%BC-%ED%91%9C%EC%8B%9C%ED%95%98%EA%B8%B0-0320fe58-0117-fd59-6851-9b7f9840fdb2)\\n\\n> [!tip] Adding `.obsidian` to Git\\n> `.obsidian/workspace` 파일은 현재의 작업 공간 레이아웃을 저장하며, 새 파일을 열 때마다 변경됩니다. \\'보관소\\'를 버전 관리하기 위해 [Git](https://git-scm.com)을 사용한다면 `.obsidian/workspace` 파일을 `.gitignore`에 추가하는 것이 좋을 수 있습니다. ## Global settings\\n\\nObsidian은 전역 설정을 시스템 폴더에 저장합니다. 시스템 폴더의 위치는 사용 중인 운영 체제에 따라 다릅니다. - **macOS**: `/Users/yourusername/Library/Application Support/obsidian`\\n- **Windows**: `%APPDATA%\\\\Obsidian\\\\`\\n- **Linux**: `$XDG_CONFIG_HOME/Obsidian/` or `~/.config/Obsidian/`\\n\\n> [!warning]\\n> 시스템 폴더에 \\'보관소\\'를 생성하지 마십시오. 이로 인해 데이터 손상 또는 데이터 손실이 발생할 수 있습니다.'),\n",
" Document(metadata={'source': 'Google Keep에서 노트 가져오기.md', 'path': 'obsidian-help/ko/노트 가져오기/Google Keep에서 노트 가져오기.md', 'created': 1727746136.5329216, 'last_modified': 1727746136.5329216, 'last_accessed': 1727746142.8431318, 'permalink': 'import/google-keep'}, page_content='Obsidian을 사용하면 Google Keep에서 노트를 쉽게 마이그레이션할 수 있습니다. 이를 위해서 [[Importer|Importer 플러그인]]을 사용합니다. ## Export your data from Google Keep\\n\\n1. [Google Takeout](https://takeout.google.com/settings/takeout)으로 이동하고 Google 계정에 로그인합니다. 2. 오른쪽 상단의 **모두 선택 해제**를 클릭합니다. 3. 아래로 스크롤하여 목록에서 **Keep**를 선택합니다. 4. 페이지 하단으로 스크롤하고 **다음 단계**를 클릭합니다. 5. 다음 화면에서 **내보내기 생성** 버튼을 클릭합니다. 6. 사용 가능한 경우 `.zip` 파일을 다운로드합니다. ## Import your Google Keep data into Obsidian\\n\\n공식 Obsidian [[Importer]] 플러그인이 필요하며, 이를 [여기에서 설치](obsidian://show-plugin?id=obsidian-importer)할 수 있습니다. 1.'),\n",
" Document(metadata={'source': '노트 연결하기.md', 'path': 'obsidian-help/ko/시작하기/노트 연결하기.md', 'created': 1727746136.5350266, 'last_modified': 1727746136.5350266, 'last_accessed': 1727746143.199288, 'aliases': 'How to/Basic note taking'}, page_content='\\nObsidian은 노트 작성에 좋은 도구이지만, Obsidian의 진정한 힘은 노트를 서로 연결할 수 있는 능력에 있습니다. 정보 하나가 다른 정보와 어떻게 관련되는지 이해함으로써 해당 정보를 기억하고 더 깊은 통찰력을 얻을 수 있습니다. 이 가이드에서는 Obsidian에서 링크를 생성하고 탐색하는 방법을 배우게 됩니다. ## Step 1: Create a link\\n\\n이 단계에서는 두 개의 노트를 생성하고 \\\\[\\\\[이중 괄호 구문\\\\]\\\\]을 사용하여 이들을 서로 연결할 것입니다. 1. [[첫 노트 만들기|노트 생성]]의 이름을 \"Three laws of motion\"으로 설정 하고 다음 텍스트를 추가하세요. > The laws of motion are three laws stated by Isaac Newton, that describe the relationship between the motion of an object, and the forces acting on it. 2. \"Law of Inertia\"라는 이름의 다른 노트를 만들고 다음 텍스트를 추가하세요:\\n\\n > The Law of Inertia is one of the. 3. 문장 끝에 키보드에서 왼쪽 대괄호 (`[`)를 두 번 누르세요. 4. \"three\"를 입력하여 첫 번째로 생성한 노트를 찾으세요. 5.'),\n",
" Document(metadata={'source': '탭.md', 'path': 'obsidian-help/ko/유저 인터페이스/탭.md', 'created': 1727746136.536517, 'last_modified': 1727746136.536517, 'last_accessed': 1727746143.3285036, 'aliases': \"['Stacked tabs', 'Linked pane', 'Pane layout']\"}, page_content='\\nObsidian에서는 원하는 만큼 많은 탭을 열 수 있습니다. 또한 사용자 지정 레이아웃을 만들기 위해 탭을 정리하여 다음 번 응용 프로그램을 열 때까지 유지할 수 있습니다. ## Open a new tab\\n\\n응용 프로그램 창 상단에서 오른쪽의 마지막 탭 옆에 **새 탭** (플러스 아이콘)을 선택합니다. 또는 다음 키보드 바로 가기를 사용할 수 있습니다. - **Windows and Linux:** `Ctrl+t`\\n- **macOS:** `Cmd+t`\\n\\n## Open a link\\n\\n활성 탭에서 링크를 선택하여 열 수 있습니다. 새 탭에서 링크를 열려면 `Ctrl` (또는 macOS의 경우 `Cmd`)를 누르고 해당 링크를 선택합니다. 다음은 다양한 방식으로 링크를 열 수 있는 수정자 키입니다:\\n\\n\\n|Action|MacOS|Windows/Linux|\\n|---|---|---|\\n|**이동**|_None_|_None_|\\n|**새 탭**|`⌘`\\xa0(+\\xa0`Shift`\\xa0소스모드에서)|`Ctrl`\\xa0(+\\xa0`Shift`\\xa0소스모드에서)|\\n|**새 탭 그룹**|`⌘` `⌥`| `Ctrl` `Alt`|\\n|**새 창**|`⌘` `⌥` `Shift`|`Ctrl` `Alt` `Shift`|\\n\\n## Organize your tabs and windows\\n\\n각 탭은 _탭 그룹_에 속합니다. 탭을 탭 그룹 내에서 재정렬하거나 다른 탭 그룹으로 이동하거나 새 탭 그룹을 만들 수 있습니다. 데스크톱에서는 탭을 창에서 끌어서 별도의 [[팝업 창|팝아웃 창]]에서 열 수 있습니다. 사이드바의 탭은 아이콘만 표시됩니다. 아이콘 위로 마우스를 올리면 탭 제목이 표시됩니다. ### Arrange tabs\\n\\n탭의 순서를 변경하려면 탭 그룹의 탭 사이에서 탭을 드래그합니다. 탭을 드래그할 때는 이동할 수 있는 위치를 나타내는 _드롭 영역_이 강조 표시됩니다. 드롭 영역은 탭을 삽입할 위치를 결정합니다. 일부 탭은 사이드바에만 위치할 수 있습니다. ### Split a tab group\\n\\n탭을 마우스 오른쪽 버튼으로 클릭하고 **오른쪽 분할** 또는 **아래 분할**을 선택하여 해당 탭으로 새로운 탭 그룹을 만듭니다. 또한 탭을 다른 탭 아래로 드래그하여 탭 그룹을 분할할 수도 있습니다. ### Resize a tab group\\n\\n탭 그룹 크기를 조정하려면 탭 그룹의 가장자리 위로 커서를 가져가세요. 크기를 조정할 수 있는 경우 가장자리가 강조 표시됩니다. 중간의 탭 그룹에 더 많은 공간을 확보하려면 사이드바 크기도 비슷하게 조절할 수 있습니다. ### Move tab to a new window\\n\\n**드래그 앤 드롭:**\\n\\n- 탭을 선택하고 응용 프로그램 창 외부로 드래그하여 새 창에서 엽니다. **명령어 팔레트:**\\n\\n- 명령어 팔레트를 열고 **현재 탭을 새 창으로 이동**를 선택하세요. ### Move a tab to a different window\\n\\n탭을 다른 기존 창으로 이동하려면 탭을 이동하려는 창으로 드래그하면 됩니다. ### Pin a tab\\n\\n탭을 고정하려면 탭을 마우스 오른쪽 버튼으로 클릭하고 **고정**을 선택하세요. 고정된 탭에서는 항상 별도의 탭에서 링크가 열립니다. 고정된 탭을 고정 해제하려면 탭을 마우스 오른쪽 버튼으로 클릭하고 **고정 해제**를 선택하세요. ## Switch to a different tab\\n\\n탭을 선택하여 해당 탭으로 전환할 수 있습니다. 또는 다음 키보드 바로 가기를 사용할 수 있습니다:\\n\\n| Switch To | MacOS | Windows/Linux |\\n|---------------------------|------------------|----------------------|\\n| **다음 탭** | `⌃`+`⇥` | `Ctrl`+`Tab` |\\n| **이전 탭** | `⌃`+`⇧`+`⇥` | `Ctrl`+`Shift`+`Tab` |\\n| **가장 왼쪽의 첫 번째 탭** | `⌘`+`1` | `Ctrl`+`1` |\\n| **두 번째에서 여덟 번째 탭** | `⌘`+`2`..`8` | `Ctrl`+`2`..`8` |\\n| **오른쪽에서 마지막 탭** | `⌘`+`9` | `Ctrl`+`9` |\\n| **최근에 닫은 탭** | `⌘`+`⇧`+`t` | `Ctrl`+`Shift`+`t` |\\n\\n## Stack tab groups\\n\\n탭을 쌓아서 탭 그룹 내의 다른 탭 위로 슬라이드할 수 있습니다. 노트를 쌓으려면 탭 그룹의 오른쪽 상단에 있는 아래쪽 화살표를 선택한 다음 **노트 쌓기**를 선택하세요. ![tab-stacks](https://user-images.githubusercontent.com/693981/188205363-0f24b2a5-3706-4a8c-b38b-7a66baa68ce6.gif)\\n\\n> [!note] Matushak 모드\\n> 탭 스택은 [Andy Matushak의 슬라이딩 노트](https://notes.andymatuschak.org/)에 기반합니다. ## Linked views\\n\\n_연결된 뷰_는 다른 탭을 참조하는 탭입니다. 참조된 탭의 내용이 변경되면 연결된 뷰도 변경됩니다. 노트 탭의 경우 다음 플러그인을 연결된 뷰로 사용할 수 있습니다:\\n\\n- [[그래프 뷰|그래프 뷰]] (로컬)\\n- [[백링크|백링크]]\\n- [[개요|개요]]\\n\\n노트 탭에 연결된 뷰를 열려면 다음 단계를 따르세요. 1.'),\n",
" Document(metadata={'source': '여러 장치에서 노트 동기화하기.md', 'path': 'obsidian-help/ko/시작하기/여러 장치에서 노트 동기화하기.md', 'created': 1727746136.535341, 'last_modified': 1727746136.535341, 'last_accessed': 1727746143.8404388}, page_content='동기화란 노트를 여러 장치 간에 최신 상태로 유지하는 것을 의미합니다. 예를 들어 노트북과 스마트폰과 같은 여러 장치 간에 노트를 동기화하는 가장 쉬운 방법은 [[Obsidian Sync 소개|Obsidian Sync]]를 사용하는 것입니다. Obsidian Sync 구독이 이미 있는 경우 [[Obsidian Sync 설정]]를 참조하십시오. 다만 여러 동기화 서비스 (예: Obsidian Sync _및_ Dropbox)를 동시에 사용하는 경우 데이터 손실, 손상 및 기타 문제가 발생할 수 있다는 점을 유의해야 합니다. [[Obsidian Sync and third-party services||Obsidian Sync 및 타사 서비스 사용에 대해 자세히 알아보기]]. ## Sync notes across multiple desktops\\n\\n만약 Obsidian을 모바일 장치에서 사용하지 않는 경우 로컬 폴더를 클라우드 스토리지에 동기화하는 어떤 타사 서비스든 사용할 수 있습니다. 예를 들어 다음과 같은 서비스를 사용할 수 있습니다:\\n\\n- Dropbox\\n- Google Drive\\n- iCloud Drive\\n- OneDrive\\n- Syncthing\\n\\n노트를 동기화하려면 사용하는 서비스에 대한 지침을 따라 로컬 파일 시스템을 클라우드에 동기화하고, 그런 다음 모든 데스크탑 장치에서 기존 보관소를 열도록 하십시오. ## Sync your notes on iPhone and iPad\\n\\niPhone 또는 iPad에서 노트를 동기화하려면 다음 옵션 중에서 공식 지원되는 옵션을 사용할 수 있습니다. - [[Obsidian Sync 소개|Obsidian Sync]]\\n- [[#iCloud Drive]]\\n\\n**참고:** 다음 서비스는 공식으로 지원되지 않습니다. 이러한 서비스 중 하나를 사용하여 iOS 장치에서 노트를 동기화하는 방법을 발견하면 Obsidian 커뮤니티 채널에서 알려 주세요. - Dropbox\\n- Google Drive\\n- OneDrive\\n- Syncthing\\n\\n### iCloud Drive\\n\\nObsidian은 로컬 파일 시스템으로 iCloud Drive를 사용할 수 있습니다. macOS에서 iCloud Drive를 사용할 때, 데스크탑 앱의 설치 버전을 v0.13.0 이상으로 업데이트해야 합니다. > [!note]\\n> iCloud 저장 용량 제한을 초과하지 마십시오. 동기화가 중지될 수 있습니다. #### Create a new vault in iCloud Drive\\n\\niPhone 또는 iPad에서 iCloud Drive에 새로운 보관소를 만들려면 다음 단계를 수행하십시오:\\n\\n1. **새로운 보관소 생성**(Create new vault) 를 탭합니다. 2. **보관소 이름**(Vault name)에 보관소 이름을 입력합니다. 3. **iCloud에 저장**을 활성화합니다. 4. **생성**(Create)를 탭합니다. Obsidian은 iCloud Drive 내부에 새로운 폴더를 만들었습니다. 컴퓨터에서 iCloud Drive 폴더를 기존 보관소로 열려면 다음을 수행하십시오:\\n\\n1. 컴퓨터에서 **Obsidian**을 엽니다. 2. **보관소로 폴더 열기**(Open folder as vault)의 오른쪽에서 **열기**를 선택합니다. 3. **iCloud Drive → Obsidian**로 이동합니다. 4. 동기화하려는 보관소 이름과 동일한 폴더를 선택합니다. #### Sync an existing vault with iCloud Drive\\n\\n기존 보관소를 iCloud를 사용하여 동기화하려면 iCloud Drive에서 빈 보관소를 만들고 그 빈 보관소로 다른 장치의 노트를 이동해야 합니다. iCloud Drive에서 새로운 빈 보관소를 만들려면 다음을 수행하십시오:\\n\\n1. **새로운 보관소 생성**(Create new vault)를 탭합니다.'),\n",
" Document(metadata={'source': '로컬 및 원격 보관소.md', 'path': 'obsidian-help/ko/Obsidian Sync/로컬 및 원격 보관소.md', 'created': 1727746136.530145, 'last_modified': 1727746136.530145, 'last_accessed': 1727746143.3151577}, page_content='Obsidian은 노트를 컴퓨터의 로컬 보관소에 저장합니다. 다른 장치에서 노트에 액세스하려면 로컬 보관소를 해당 장치와 공유해야 합니다. [[Obsidian Sync 소개|Obsidian Sync]]은 Obsidian의 서버에 존재하는 원격 보관소와 로컬 보관소을 동기화함으로써 이를 더 쉽게 만들어줍니다. 여러 로컬 보관소를 원격 보관소에 연결할 수 있습니다.'),\n",
" Document(metadata={'source': 'Notion에서 노트 가져오기.md', 'path': 'obsidian-help/ko/노트 가져오기/Notion에서 노트 가져오기.md', 'created': 1727746136.5333538, 'last_modified': 1727746136.5333538, 'last_accessed': 1727746142.8048298, 'permalink': 'import/notion'}, page_content='Obsidian을 사용하면 [[Importer|Importer 플러그인]]을 사용하여 Notion에서 노트를 쉽게 마이그레이션할 수 있습니다. ## Export your data from Notion\\n\\nObsidian은 Notion의 HTML 내보내기 형식을 사용합니다. 전체 워크스페이스를 내보내는 방법에 대한 Notion의 지침은 [Notion 웹사이트](https://www.notion.so/help/export-your-content)에서 확인할 수 있습니다. 이 옵션을 보려면 워크스페이스 관리자 여야합니다.'),\n",
" Document(metadata={'source': '오디오 레코더.md', 'path': 'obsidian-help/ko/플러그인/오디오 레코더.md', 'created': 1727746136.5398052, 'last_modified': 1727746136.5398052, 'last_accessed': 1727746143.5807981}, page_content='## Record audio in a note\\n\\n1. Obsidian에서 새 노트를 만들거나 기존 노트를 엽니다. 2. 리본(데스크톱 버전의 왼쪽 사이드바)에서 **녹음 시작/중지** (마이크 아이콘)를 클릭하여 녹음을 시작합니다. 녹음은 아이콘이 색깔이 바뀌는 즉시 시작됩니다. 3. 녹음을 완료하고 노트에 추가하려면 아이콘을 다시 클릭하십시오. Obsidian은 녹음한 오디오 파일을 보관소에 저장하며 활성 노트의 끝에 그것을 [[파일 삽입|임베드]]합니다. > [!note]\\n> 오디오 녹음은 노트에서 제거한 후에도 보관소에 남습니다. 컴퓨터에서 녹음을 완전히 제거하려면 Obsidian [[파일 탐색기|파일 탐색기]]를 사용하여 해당 파일을 삭제할 수 있습니다. '),\n",
" Document(metadata={'source': '다중 커서.md', 'path': 'obsidian-help/ko/편집 및 서식 지정/다중 커서.md', 'created': 1727746136.5377362, 'last_modified': 1727746136.5377362, 'last_accessed': 1727746143.3665502, 'aliases': \"['How to/Working with multiple cursors']\"}, page_content='\\nObsidian을 사용하면 여러 커서를 사용하여 동시에 여러 위치에서 텍스트를 편집할 수 있습니다. 추가 커서를 추가하려면 `Alt` 키 (또는 macOS에서는 `Option` 키)를 누른 상태에서 노트 내의 다른 위치를 클릭하면 됩니다. 모든 추가 커서와 함께 선택을 제거하려면 어떤 키도 누르지 않고 노트 내 어디든 클릭하면 됩니다. 또한 `Escape` 키를 눌러 선택을 제거할 수도 있습니다. ## Rectangular selection\\n\\n텍스트의 연속적인 줄을 편집하려는 경우 - 예를 들어 단락을 목록 항목으로 바꾸려는 경우 - 드래그하는 동안 `Shift+Alt` (또는 macOS에서는 `Shift+Option`) 키를 누를 수 있습니다. 또는 중간 마우스 버튼을 누른 상태로 드래그할 수도 있습니다.'),\n",
" Document(metadata={'source': 'Microsoft OneNote에서 노트 가져오기.md', 'path': 'obsidian-help/ko/노트 가져오기/Microsoft OneNote에서 노트 가져오기.md', 'created': 1727746136.5332863, 'last_modified': 1727746136.5332863, 'last_accessed': 1727746142.7925067, 'permalink': 'import/onenote'}, page_content='\\nObsidian을 사용하면 Microsoft OneNote에서 노트를 쉽게 마이그레이션할 수 있습니다. 이를 위해서 [[Importer|Importer 플러그인]]을 사용합니다. ## Import your OneNote data into Obsidian\\n\\n공식 Obsidian [[Importer]] 플러그인이 필요하며, 이를 [여기에서 설치](obsidian://show-plugin?id=obsidian-importer)할 수 있습니다. 1.'),\n",
" Document(metadata={'source': 'Roam Research에서 노트 가져오기.md', 'path': 'obsidian-help/ko/노트 가져오기/Roam Research에서 노트 가져오기.md', 'created': 1727746136.5334353, 'last_modified': 1727746136.5334353, 'last_accessed': 1727746142.8139348, 'permalink': 'import/roam'}, page_content='Obsidian을 사용하면 [[Importer|Importer 플러그인]]을 사용하여 Roam Research에서 노트를 쉽게 마이그레이션할 수 있습니다. ## Export your data from Roam Research\\n\\n1. Roam Research에서 오른쪽 상단의\\xa0**더 많은 작업**\\xa0(`•••`\\xa0아이콘)을 클릭한 다음 **모두 내보내기**를 선택합니다. ![[Roam-exporting.png]]\\n2. **내보내기 형식**에서 \"JSON\"을 선택한 다음 **모두 내보내기**를 선택하여 노트와 함께 아카이브를 다운로드합니다. ## Import your Roam Research data into Obsidian\\n\\n공식 Obsidian [[Importer]] 플러그인이 필요하며, 이를 [여기에서 설치](obsidian://show-plugin?id=obsidian-importer)할 수 있습니다. 1.'),\n",
" Document(metadata={'source': '일일 노트.md', 'path': 'obsidian-help/ko/플러그인/일일 노트.md', 'created': 1727746136.5399473, 'last_modified': 1727746136.5399473, 'last_accessed': 1727746143.532615}, page_content='3. 사이드바에서 **플러그인 옵션** 아래의 **일일 노트**를 클릭하십시오. 4. **템플릿 파일 위치** 옆의 텍스트 상자에서 \"일일 템플릿\" 노트를 선택하십시오. Obsidian은 새로운 일일 노트를 만들 때 템플릿을 사용합니다. '),\n",
" Document(metadata={'source': 'Apple Notes에서 노트 가져오기.md', 'path': 'obsidian-help/ko/노트 가져오기/Apple Notes에서 노트 가져오기.md', 'created': 1727746136.5327184, 'last_modified': 1727746136.5327184, 'last_accessed': 1727746142.767491, 'permalink': 'import/apple-notes'}, page_content='Obsidian은 [[Importer|Importer 플러그인]]을 사용하여 Apple Notes에서 노트를 쉽게 마이그레이션할 수 있게 해줍니다. ## Export your data from Apple Notes\\n\\nApple은 노트를 내보내기하는 기본 옵션을 제공하지 않습니다.'),\n",
" Document(metadata={'source': 'Obsidian Publish 사이트에서 협업하기.md', 'path': 'obsidian-help/ko/Obsidian Publish/Obsidian Publish 사이트에서 협업하기.md', 'created': 1727746136.528427, 'last_modified': 1727746136.528427, 'last_accessed': 1727746142.5738885}, page_content='제거하려는 협업자 옆에 **사용자 제거** (엑스 아이콘)를 선택합니다. ## Syncing changes between collaborators\\n\\nObsidian Publish는 로컬 보관소 간에 출판된 변경 사항을 자동으로 동기화하지 않습니다. 대신, 협업자들은 다른 협업자로부터 변경 사항을 수동으로 동기화해야 합니다. 라이브 사이트에서 로컬 노트를 변경하려면:\\n\\n1. 애플리케이션 창 왼쪽의 리본에서 **변경 사항 출판** (비행기 아이콘)을 클릭합니다. 2. 동기화하려는 변경 사항을 마우스 오른쪽 버튼으로 클릭하고 **라이브 버전 사용**을 선택합니다. **이렇게 하면 로컬 보관소의 노트가 덮어씁니다.**\\n\\n> [!tip]\\n> 다른 보관소 간의 변경 사항을 동기화하기 위해 [[Obsidian Sync]] 또는 [git](https://git-scm.com/)과 같은 다른 도구를 사용하는 것을 권장합니다. ## Permissions\\n\\n다음 표는 소유자와 협업자를 위한 가능한 사이트 권한을 나열한 것입니다:\\n\\n| 작업 | 협업자 | 소유자 |\\n|------------------------------------ |:------------:|:-----:|\\n| 새 페이지 출판 | ✓ | ✓ |\\n| 출판된 페이지에 대한 변경 사항 출판 | ✓ | ✓ |\\n| 페이지 출판 취소 | ✓ | ✓ |\\n| 사이트 옵션 구성 | | ✓ |\\n| 권한 관리 | | ✓ |\\n'),\n",
" Document(metadata={'source': '이전 노트 리다이렉트.md', 'path': 'obsidian-help/ko/Obsidian Publish/이전 노트 리다이렉트.md', 'created': 1727746136.529517, 'last_modified': 1727746136.529517, 'last_accessed': 1727746142.580113}, page_content='노트 이름 변경 및 삭제는 활성화된 보관소를 유지 관리하는 일부입니다. Obsidian은 로컬 보관소 내에서 노트를 이동할 때 링크를 자동으로 업데이트하지만, 다른 웹 사이트는 여전히 [[Obsidian Publish 소개|Obsidian Publish]] 사이트에서 이전 노트에 링크할 수 있습니다. 이 기사에서는 한 노트에서 다른 노트로 독자를 리디렉션하는 방법을 배우게 됩니다. 예를 들어, 한 폴더에서 노트를 다른 폴더로 이동하려고 합니다:\\n\\n- **가이드**\\n - ~~Making friends.md~~ (removed)\\n- **튜토리얼**\\n - *How to make friends.md* (added)\\n\\n노트를 이동한 후 Obsidian은 보관소 내의 모든 링크를 자동으로 업데이트합니다. 그러나 이러한 변경 사항을 Publish 사이트에 출판하면 `/Guides/Making+friends`로의 모든 링크는 404 오류를 반환할 것입니다. `/Guides/Making+friends`에서 `/Tutorials/How+to+make+friends`로 독자를 리디렉션하려면 리디렉션하려는 노트인 `How to make friends.md`에 [[별칭|alias]]를 추가해야 합니다. ```md\\n---\\nalias: Guides/Making friends\\n---\\n\\n# How to make friends\\n```\\n\\n> [!important]\\n> 기존 노트에 대한 alias에는 이전 노트의 전체 경로를 포함해야 합니다. 로컬 보관소에서 노트 이름만을 alias로 사용하는 것은 작동하지만, Publish는 리디렉션하기 위해 노트의 전체 경로가 필요합니다. 여러 노트를 리디렉션하려면 각각의 alias를 추가할 수 있습니다.'),\n",
" Document(metadata={'source': '스타일 가이드.md', 'path': 'obsidian-help/ko/Obsidian에 기여하기/스타일 가이드.md', 'created': 1727746136.532154, 'last_modified': 1727746136.532154, 'last_accessed': 1727746142.7328568}, page_content='Obsidian 문서는 [Google 개발자 문서 스타일 가이드](https://developers.google.com/style)를 사용합니다. Google 스타일 가이드에서 다루지 않는 주제에 대한 경우 [Microsoft 스타일 가이드](https://learn.microsoft.com/en-us/style-guide/)를 사용하세요. 이 페이지에서는 Google 스타일 가이드와의 차이점이나 강조할 가치가 있는 용어를 나열합니다. > [!tip] 기여\\n> 이 스타일 가이드가 존재하기 전에 문서 대부분이 이미 존재했습니다. 이 스타일 가이드 위반을 발견하면 [이슈 생성](https://github.com/obsidianmd/obsidian-docs/issues/new) 또는 [obsidianmd/obsidian-docs](https://github.com/obsidianmd/obsidian-docs) 저장소로 풀 리퀘스트를 제출해 주세요. > 영문으로 제품 설명이나 UI 기능을 설명할 때 선호하는 단어들을 기술합니다. ## Terminology\\n\\n- \"단축키(keyboard shortcut)\" 대신 \"키보드 단축키(hotkey)\"를 선호합니다. Hotkey는 구체적인 기능을 나타낼 때 사용합니다. - 모바일에서는 \"Obsidian app\"을, 데스크톱에서는 \"Obsidian application\"을 선호합니다. - \"synchronize\" 또는 \"synchronizing\" 대신 \"sync\" 또는 \"syncing\" 를 선호합니다. - \"search query\" 대신 \"search term\"를 선호합니다. - 섹션을 소개하는 텍스트를 참조할 때 \"header\" 대신 \"heading\"을 선호합니다. - \"max\" 대신 \"maximum\"를 선호하고 \"min\" 대신 \"minimum\"를 선호합니다. ### Product names\\n\\nObsidian 제품 이름은 \"Obsidian\"으로 시작합니다. 예를 들어 \"Obsidian Publish\"와 \"Obsidian Sync\"입니다. 단락이 지나치게 반복적인 경우 나중에 참조에서는 짧은 형식을 사용할 수 있습니다. 예를 들어:\\n\\n_\"기기별 구성을 허용하기 위해 Obsidian Sync는 자체 설정을 동기화하지 않습니다. 각 기기에 대해 Sync를 구성해야 합니다.\"_\\n\\n_To allow device-specific configuration, Obsidian Sync doesn\\'t sync its own settings. You need to configure Sync for each of your devices._\\n\\n### UI and interactions\\n\\n- \"tap\" 또는 \"click\" 대신 \"select\"를 선호합니다. - \"sidebar\" 대신 \"side bar\"를 선호합니다. - 명령 또는 작업을 참조할 때 \"invoke\" 또는 \"execute\" 대신 \"execute\"을 선호합니다. 연속적인 UI 상호 작용을 여러 번 언급할 때는 → (U+2192) 기호를 사용하세요. 예를 들어 \"**Settings → Community plugins**\". ### Notes, files, and folders\\n\\n- 보관소(Vault)에 대한 언급 시 \"노트(note)\"를 사용합니다. - Markdown 파일 이외의 파일 확장자를 언급할 때 \"파일(file)\"을 사용합니다. - \"노트 제목(note title)\" 대신 \"노트 이름(note name)\"을 선호합니다. - \"현재 노트(current note)\" 대신 \"활성화 노트(active note)\"를 선호합니다. - \"디렉토리(directory)\" 대신 \"폴더(folder)\"를 선호합니다. - 파일 콘텐츠의 데이터 형식을 구체적으로 언급하지 않는 한 \"파일 형식(file format)\" 대신 \"파일 포맷(file type)\"을 선호하세요. 노트 간 이동 시 대상이 숨겨진 경우 \"열기(open)\"를 사용하고 소스 및 대상 노트가 별도로 분할되어 열려 있는 경우 \"전환(switch)\"을 사용하세요. ## Reference documentation for settings\\n\\n가능한 경우 모든 설정은 설명 텍스트를 사용하여 Obsidian 내에서 문서화되어야 합니다. Obsidian 도움말에 특정 설정을 문서화하지 않아야 합니다. 그렇게 해야 하는 경우는:\\n\\n- 그것을 사용하는 방법과 시기에 대한 보다 심도 있는 지식이 필요한 경우.'),\n",
" Document(metadata={'source': '노트 게시 및 게시 취소.md', 'path': 'obsidian-help/ko/Obsidian Publish/노트 게시 및 게시 취소.md', 'created': 1727746136.5286996, 'last_modified': 1727746136.5286996, 'last_accessed': 1727746142.5354826}, page_content='**출판**를 클릭합니다. ## Publish linked notes\\n\\n다른 노트에 링크된 노트를 출판하면 해당 노트를 출판하지 않는 경우 링크가 깨집니다. Obsidian Publish는 이미 선택한 노트에서 링크된 노트를 선택함으로써 도움을 줄 수 있습니다. 모든 연결된 노트를 선택하려면 **변경 사항 출판** 대화 상자에서 **연결된 항목 추가(Add linked)**를 클릭합니다. 출판할 준비가 되지 않은 노트가 포함되지 않도록 업데이트된 선택 항목을 검토합니다. ## Automatically select notes to publish\\n\\n노트를 자동으로 출판하려면 해당 노트의 [[속성|속성]]에서 `publish: true`를 설정합니다. ## Ignore notes\\n\\nObsidian Publish에서 특정 노트를 무시하려면 해당 노트의 [[속성|속성]]에서 `publish: false`를 설정합니다. 이제 해당 노트는 출판할 노트 목록에 표시되지 않습니다. ## Permalinks\\n\\n영구 링크(_permalinks_)를 사용하여 노트의 URL을 변경할 수 있습니다. 예를 들어, 다음과 같은 URL을 변경할 수 있습니다:\\n\\n```\\nhttps://publish.obsidian.md/username/Company/About+us\\n```\\n\\n다음과 같이 변경합니다. ```\\nhttps://publish.obsidian.md/username/about\\n```\\n\\n노트에 영구 링크를 생성하려면 [[속성|속성]]에 `permalink` 속성을 추가합니다. ```yaml\\n---\\npermalink: about\\n---\\n```\\n\\n원래 URL을 사용하여 노트를 방문하는 사람은 자동으로 영구 링크로 리디렉션됩니다. ')]"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 리랭커(Rerank)\n",
"\n",
"FlashrankRerank"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"# Rerank\n",
"from langchain.retrievers import ContextualCompressionRetriever\n",
"from langchain.retrievers.document_compressors import FlashrankRerank\n",
"\n",
"compressor = FlashrankRerank(model=\"ms-marco-MultiBERT-L-12\", top_n=3)\n",
"\n",
"compression_retriever = ContextualCompressionRetriever(\n",
" base_compressor=compressor,\n",
" base_retriever=retriever,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'id': 30, 'relevance_score': 0.9996191, 'source': '다중 커서.md', 'path': 'obsidian-help/ko/편집 및 서식 지정/다중 커서.md', 'created': 1727746136.5377362, 'last_modified': 1727746136.5377362, 'last_accessed': 1727746143.3665502, 'aliases': \"['How to/Working with multiple cursors']\"}, page_content='\\nObsidian을 사용하면 여러 커서를 사용하여 동시에 여러 위치에서 텍스트를 편집할 수 있습니다. 추가 커서를 추가하려면 `Alt` 키 (또는 macOS에서는 `Option` 키)를 누른 상태에서 노트 내의 다른 위치를 클릭하면 됩니다. 모든 추가 커서와 함께 선택을 제거하려면 어떤 키도 누르지 않고 노트 내 어디든 클릭하면 됩니다. 또한 `Escape` 키를 눌러 선택을 제거할 수도 있습니다. ## Rectangular selection\\n\\n텍스트의 연속적인 줄을 편집하려는 경우 - 예를 들어 단락을 목록 항목으로 바꾸려는 경우 - 드래그하는 동안 `Shift+Alt` (또는 macOS에서는 `Shift+Option`) 키를 누를 수 있습니다. 또는 중간 마우스 버튼을 누른 상태로 드래그할 수도 있습니다.'),\n",
" Document(metadata={'id': 18, 'relevance_score': 0.9995727, 'source': '기본 서식 구문.md', 'path': 'obsidian-help/ko/편집 및 서식 지정/기본 서식 구문.md', 'created': 1727746136.5375443, 'last_modified': 1727746136.5375443, 'last_accessed': 1727746143.3936386, 'aliases': \"['How to/Format your notes', 'Markdown']\"}, page_content='- [ ] 이 항목은 완료되지 않았습니다. ```\\n\\n- [x] 이 항목은 완료되었습니다. - [ ] 이 항목은 완료되지 않았습니다. 읽기 보기에서 체크 박스를 선택하여 작업 목록을 토글할 수 있습니다. > [!tip]\\n> 완료되었다는 표시를 위해 대괄호 내에 어떤 문자든 사용할 수 있습니다. >\\n> ```md\\n> - [x] 우유\\n> - [?] 달걀\\n> - [-] 달걀\\n> ```\\n>\\n> - [x] 우유\\n> - [?] 달걀\\n> - [-] 달걀\\n\\n## Horizontal bar\\n\\n수평선을 추가하려면 `***`, `---`, 또는 `_ _ _` 세 개 이상의 별표, 하이픈 또는 밑줄을 자체 행에 넣습니다. 또한 기호 사이에 공백을 넣을 수 있습니다. ```md\\n***\\n****\\n* * *\\n---\\n----\\n- - -\\n___\\n____\\n_ _ _\\n```\\n\\n***\\n\\n---\\n\\n## Footnotes\\n\\n다음과 같은 구문을 사용하여 노트에 각주[^각주]를 추가할 수 있습니다:\\n\\n[^각주] 이것은 각주입니다. ```md\\n이것은 간단한 각주[^1]입니다. [^1]: 이것은 참조된 텍스트입니다. [^2]: 각 새로운 줄에서 2개의 공백을 추가합니다. 이렇게 하면 여러 줄에 걸친 각주를 작성할 수 있습니다. [^note]: 이름이 지정된 각주는 숫자로 나타나지만 식별과 참조가 더 쉬울 수 있습니다. ```\\n\\n문장에 각주를 삽입할 수도 있습니다. 윗꺽쇠은 괄호 바깥으로 나갑니다. ```md\\n인라인 각주를 사용할 수도 있습니다. ^[이것은 인라인 각주입니다.]\\n```\\n\\n> [!note]\\n> 인라인 각주는 읽기보기 모드에서만 작동하며 라이브 미리보기에서는 작동하지 않습니다. ## Comments\\n\\n텍스트를 `%%`로 둘러싸서 주석을 추가할 수 있습니다. 주석은 편집 보기에서만 볼 수 있습니다. ```md\\n이것은 %%인라인%% 주석입니다. %%\\n이것은 블록 주석입니다. 블록 주석은 여러 줄에 걸칠 수 있습니다. %%\\n```\\n\\n## Learn more\\n\\n표, 다이어그램, 수학 표현식 등 고급 서식 구문에 대해 알아보려면 [[고급 서식 구문|고급 서식 구문]]을 참조하세요. Obsidian이 Markdown을 구문 분석하는 방법에 대해 자세히 알아보려면 [[Obsidian 마크다운]]을 참조하세요. '),\n",
" Document(metadata={'id': 8, 'relevance_score': 0.9995491, 'source': 'Obsidian URI.md', 'path': 'obsidian-help/ko/Obsidian 확장/Obsidian URI.md', 'created': 1727746136.5306704, 'last_modified': 1727746136.5306704, 'last_accessed': 1727746142.6785853, 'aliases': 'Using Obsidian URI'}, page_content='[자세한 내용은 여기를 참조하십시오](https://en.wikipedia.org/wiki/Percent-encoding). ## Register Obsidian URI\\n\\nWindows 및 macOS에서 앱을 한 번 실행하면 컴퓨터에 Obsidian URI 프로토콜을 등록하는 데 충분합니다. Linux의 경우, 더 복잡한 프로세스입니다:\\n\\n1. `obsidian.desktop` 파일을 만들어야 합니다. [자세한 내용은 여기를 참조하십시오](https://developer.gnome.org/documentation/guidelines/maintainer/integrating.html#desktop-files). 2. 데스크톱 파일에서 `Exec` 필드를 `Exec=executable %u`로 지정해야합니다. `%u`는 `obsidian://` URI를 앱에 전달하기 위해 사용됩니다. 3. AppImage 설치 프로그램를 사용하는 경우, `Obsidian-x.y.z.AppImage --appimage-extract`를 사용하여 압축을 풀어야할 수 있습니다. 그런 다음 `Exec` 지시문이 압축을 푼 실행 파일을 가리키도록해야합니다. ## Open notes\\n\\nObsidian 보관소를 열거나 해당 보관소 내의 파일을 엽니다. ### Examples\\n\\n- `obsidian://open?vault=my%20vault` 이 명령은 `my vault` 보관소를 엽니다. 이미 보관소가 열려있으면 해당 창에 중점을 둡니다. - `obsidian://open?vault=ef6ca3e3b524d22f` 이 명령은 ID `ef6ca3e3b524d22f`로 식별된 보관소를 엽니다. - `obsidian://open?vault=my%20vault&file=my%20note` 이 명령은 파일이 있는 경우 `my vault` 보관소에서 노트 `my note.md`를 엽니다. - `obsidian://open?path=%2Fhome%2Fuser%2Fmy%20vault%2Fpath%2Fto%2Fmy%20note` 이 명령은 파일이 어떤 보관소에 있는지 검색합니다. 그런 다음 나머지 경로는 `file` 매개 변수로 전달됩니다. 예를 들어, `/home/user/my vault`에 보관소가 있으면 이것은 `file` 매개 변수가 `path/to/my note`로 설정된 것과 같습니다. > [!tip] 헤딩 또는 블록 열기\\n> 올바른 URI 인코딩을 사용하면 노트 내의 헤딩이나 블록으로 이동할 수 있습니다. `Note%23Heading`는 \"Heading\"이라고 불리는 헤딩으로 이동하고 `Note%23%5EBlock`은 \"Block\"이라고 불리는 블록으로 이동합니다. ### Parameters\\n\\n- `vault`는 보관소 이름 또는 보관소 ID[^1] 일 수 있습니다. - `file`는 파일 이름 또는 지정된 파일까지의 보관소 루트로의 경로입니다. 파일 확장자가 `md` 인 경우 확장자를 생략할 수 있습니다. - `path`는 파일 시스템의 절대 경로입니다. - 이 매개 변수를 사용하면 `vault` 및 `file` 모두 무시됩니다. - 이것은 앱이 지정된 파일 경로를 포함하는 가장 구체적인 보관소를 검색하게 합니다. - 그런 다음 경로의 나머지 부분이 `file` 매개 변수를 대체합니다. ## Open search\\n\\n이 Obsidian URI 엔드포인트는 지정된 보관소에서 [[검색|검색]]을 열고 선택적으로 검색 쿼리를 수행합니다. ### Examples\\n\\n- `obsidian://search?vault=my%20vault`\\n 이 명령은 `my vault` 보관소를 열고 [[검색|검색]]을 엽니다. - `obsidian://search?vault=my%20vault&query=Obsidian`\\n 이 명령은 `my vault` 보관소를 열고 [[검색|검색]]을 열고 `Obsidian`에 대한 검색을 수행합니다. ### Parameters\\n\\n- `vault`는 보관소 이름 또는 보관소 ID[^1] 일 수 있습니다. `open` 작업과 동일합니다.')]"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"compression_retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Document(metadata={'source': '오디오 레코더.md', 'path': 'obsidian-help/ko/플러그인/오디오 레코더.md', 'created': 1727746136.5398052, 'last_modified': 1727746136.5398052, 'last_accessed': 1727746143.5807981, 'relevance_score': 0.7606506943702698}, page_content='## Record audio in a note\\n\\n1. Obsidian에서 새 노트를 만들거나 기존 노트를 엽니다. 2. 리본(데스크톱 버전의 왼쪽 사이드바)에서 **녹음 시작/중지** (마이크 아이콘)를 클릭하여 녹음을 시작합니다. 녹음은 아이콘이 색깔이 바뀌는 즉시 시작됩니다. 3. 녹음을 완료하고 노트에 추가하려면 아이콘을 다시 클릭하십시오. Obsidian은 녹음한 오디오 파일을 보관소에 저장하며 활성 노트의 끝에 그것을 [[파일 삽입|임베드]]합니다. > [!note]\\n> 오디오 녹음은 노트에서 제거한 후에도 보관소에 남습니다. 컴퓨터에서 녹음을 완전히 제거하려면 Obsidian [[파일 탐색기|파일 탐색기]]를 사용하여 해당 파일을 삭제할 수 있습니다. '),\n",
" Document(metadata={'source': 'Obsidian Sync 소개.md', 'path': 'obsidian-help/ko/Obsidian Sync/Obsidian Sync 소개.md', 'created': 1727746136.5296974, 'last_modified': 1727746136.5296974, 'last_accessed': 1727746143.3155391, 'aliases': \"['Obsidian Sync']\", 'relevance_score': 0.735641598701477}, page_content='\\n[Obsidian Sync](https://obsidian.md/sync)는 Obsidian의 서버에 노트를 저장하고 여러 기기 간에 동기화할 수 있게 해주는 클라우드 기반 서비스입니다. > [!important]\\n> Obsidian Sync를 Dropbox, Google Drive 또는 OneDrive와 같은 다른 클라우드 스토리지 공급자와 함께 사용하는 경우, [[Obsidian Sync and third-party services]]를 참조하여 동기화 충돌을 피하세요. Obsidian Sync에 대해 자세히 알아보세요:\\n\\n- Obsidian Sync 사용자가 처음이라면 [[Obsidian Sync 설정]] 방법을 배워보세요. - 무엇을 동기화할지 구성하려면 [[동기화할 파일 및 설정 선택]]를 참조하세요. - 다른 기기에서 Obsidian Sync를 설정하는 방법을 알고 싶다면 [[다른 기기에서 Obsidian Sync 동기화 설정]]을 참조하세요. - 노트의 이전 버전을 보거나 복원하는 방법을 알고 싶다면 [[버전 내역|버전 내역]]를 참조하세요. - 노트를 안전하게 보호하는 방법을 알고 싶다면 [[Obsidian Sync/보안 및 개인정보 보호|보안과 프라이버시]]를 참조하세요. - 본인의 보관소를 백업하는 데 다른 서드파티 서비스를 사용하려면 [[Obsidian Sync and third-party services]]를 참조하세요. - Obsidian Sync에 문제가 있는 경우 [[Obsidian Sync 트러블슈팅]]을 참조하세요.'),\n",
" Document(metadata={'source': '로컬 및 원격 보관소.md', 'path': 'obsidian-help/ko/Obsidian Sync/로컬 및 원격 보관소.md', 'created': 1727746136.530145, 'last_modified': 1727746136.530145, 'last_accessed': 1727746143.3151577, 'relevance_score': 0.7025300860404968}, page_content='Obsidian은 노트를 컴퓨터의 로컬 보관소에 저장합니다. 다른 장치에서 노트에 액세스하려면 로컬 보관소를 해당 장치와 공유해야 합니다. [[Obsidian Sync 소개|Obsidian Sync]]은 Obsidian의 서버에 존재하는 원격 보관소와 로컬 보관소을 동기화함으로써 이를 더 쉽게 만들어줍니다. 여러 로컬 보관소를 원격 보관소에 연결할 수 있습니다.')]"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Jina\n",
"from langchain.retrievers import ContextualCompressionRetriever\n",
"from langchain_community.document_compressors import JinaRerank\n",
"\n",
"compressor = JinaRerank(model=\"jina-reranker-v2-base-multilingual\", top_n=3)\n",
"\n",
"compression_retriever = ContextualCompressionRetriever(\n",
" base_compressor=compressor,\n",
" base_retriever=retriever,\n",
")\n",
"\n",
"compression_retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:httpx:HTTP Request: POST https://api.cohere.com/v1/rerank \"HTTP/1.1 200 OK\"\n"
]
},
{
"data": {
"text/plain": [
"[Document(metadata={'source': 'Obsidian Sync 소개.md', 'path': 'obsidian-help/ko/Obsidian Sync/Obsidian Sync 소개.md', 'created': 1727746136.5296974, 'last_modified': 1727746136.5296974, 'last_accessed': 1727746143.3155391, 'aliases': \"['Obsidian Sync']\", 'relevance_score': 0.9996527}, page_content='\\n[Obsidian Sync](https://obsidian.md/sync)는 Obsidian의 서버에 노트를 저장하고 여러 기기 간에 동기화할 수 있게 해주는 클라우드 기반 서비스입니다. > [!important]\\n> Obsidian Sync를 Dropbox, Google Drive 또는 OneDrive와 같은 다른 클라우드 스토리지 공급자와 함께 사용하는 경우, [[Obsidian Sync and third-party services]]를 참조하여 동기화 충돌을 피하세요. Obsidian Sync에 대해 자세히 알아보세요:\\n\\n- Obsidian Sync 사용자가 처음이라면 [[Obsidian Sync 설정]] 방법을 배워보세요. - 무엇을 동기화할지 구성하려면 [[동기화할 파일 및 설정 선택]]를 참조하세요. - 다른 기기에서 Obsidian Sync를 설정하는 방법을 알고 싶다면 [[다른 기기에서 Obsidian Sync 동기화 설정]]을 참조하세요. - 노트의 이전 버전을 보거나 복원하는 방법을 알고 싶다면 [[버전 내역|버전 내역]]를 참조하세요. - 노트를 안전하게 보호하는 방법을 알고 싶다면 [[Obsidian Sync/보안 및 개인정보 보호|보안과 프라이버시]]를 참조하세요. - 본인의 보관소를 백업하는 데 다른 서드파티 서비스를 사용하려면 [[Obsidian Sync and third-party services]]를 참조하세요. - Obsidian Sync에 문제가 있는 경우 [[Obsidian Sync 트러블슈팅]]을 참조하세요.'),\n",
" Document(metadata={'source': '로컬 및 원격 보관소.md', 'path': 'obsidian-help/ko/Obsidian Sync/로컬 및 원격 보관소.md', 'created': 1727746136.530145, 'last_modified': 1727746136.530145, 'last_accessed': 1727746143.3151577, 'relevance_score': 0.99929583}, page_content='Obsidian은 노트를 컴퓨터의 로컬 보관소에 저장합니다. 다른 장치에서 노트에 액세스하려면 로컬 보관소를 해당 장치와 공유해야 합니다. [[Obsidian Sync 소개|Obsidian Sync]]은 Obsidian의 서버에 존재하는 원격 보관소와 로컬 보관소을 동기화함으로써 이를 더 쉽게 만들어줍니다. 여러 로컬 보관소를 원격 보관소에 연결할 수 있습니다.'),\n",
" Document(metadata={'source': 'Obsidian Publish 사이트에서 협업하기.md', 'path': 'obsidian-help/ko/Obsidian Publish/Obsidian Publish 사이트에서 협업하기.md', 'created': 1727746136.528427, 'last_modified': 1727746136.528427, 'last_accessed': 1727746142.5738885, 'relevance_score': 0.99911696}, page_content='제거하려는 협업자 옆에 **사용자 제거** (엑스 아이콘)를 선택합니다. ## Syncing changes between collaborators\\n\\nObsidian Publish는 로컬 보관소 간에 출판된 변경 사항을 자동으로 동기화하지 않습니다. 대신, 협업자들은 다른 협업자로부터 변경 사항을 수동으로 동기화해야 합니다. 라이브 사이트에서 로컬 노트를 변경하려면:\\n\\n1. 애플리케이션 창 왼쪽의 리본에서 **변경 사항 출판** (비행기 아이콘)을 클릭합니다. 2. 동기화하려는 변경 사항을 마우스 오른쪽 버튼으로 클릭하고 **라이브 버전 사용**을 선택합니다. **이렇게 하면 로컬 보관소의 노트가 덮어씁니다.**\\n\\n> [!tip]\\n> 다른 보관소 간의 변경 사항을 동기화하기 위해 [[Obsidian Sync]] 또는 [git](https://git-scm.com/)과 같은 다른 도구를 사용하는 것을 권장합니다. ## Permissions\\n\\n다음 표는 소유자와 협업자를 위한 가능한 사이트 권한을 나열한 것입니다:\\n\\n| 작업 | 협업자 | 소유자 |\\n|------------------------------------ |:------------:|:-----:|\\n| 새 페이지 출판 | ✓ | ✓ |\\n| 출판된 페이지에 대한 변경 사항 출판 | ✓ | ✓ |\\n| 페이지 출판 취소 | ✓ | ✓ |\\n| 사이트 옵션 구성 | | ✓ |\\n| 권한 관리 | | ✓ |\\n')]"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Cohere reranker\n",
"from langchain.retrievers import ContextualCompressionRetriever\n",
"from langchain_cohere import CohereRerank\n",
"\n",
"compressor = CohereRerank(model=\"rerank-multilingual-v3.0\")\n",
"\n",
"compression_retriever = ContextualCompressionRetriever(\n",
" base_compressor=compressor,\n",
" base_retriever=retriever,\n",
")\n",
"\n",
"compression_retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:sentence_transformers.cross_encoder.CrossEncoder:Use pytorch device: mps\n",
"Batches: 100%|██████████| 2/2 [00:54<00:00, 27.24s/it]\n"
]
},
{
"data": {
"text/plain": [
"[Document(metadata={'source': 'Obsidian Sync 소개.md', 'path': 'obsidian-help/ko/Obsidian Sync/Obsidian Sync 소개.md', 'created': 1727746136.5296974, 'last_modified': 1727746136.5296974, 'last_accessed': 1727746143.3155391, 'aliases': \"['Obsidian Sync']\"}, page_content='\\n[Obsidian Sync](https://obsidian.md/sync)는 Obsidian의 서버에 노트를 저장하고 여러 기기 간에 동기화할 수 있게 해주는 클라우드 기반 서비스입니다. > [!important]\\n> Obsidian Sync를 Dropbox, Google Drive 또는 OneDrive와 같은 다른 클라우드 스토리지 공급자와 함께 사용하는 경우, [[Obsidian Sync and third-party services]]를 참조하여 동기화 충돌을 피하세요. Obsidian Sync에 대해 자세히 알아보세요:\\n\\n- Obsidian Sync 사용자가 처음이라면 [[Obsidian Sync 설정]] 방법을 배워보세요. - 무엇을 동기화할지 구성하려면 [[동기화할 파일 및 설정 선택]]를 참조하세요. - 다른 기기에서 Obsidian Sync를 설정하는 방법을 알고 싶다면 [[다른 기기에서 Obsidian Sync 동기화 설정]]을 참조하세요. - 노트의 이전 버전을 보거나 복원하는 방법을 알고 싶다면 [[버전 내역|버전 내역]]를 참조하세요. - 노트를 안전하게 보호하는 방법을 알고 싶다면 [[Obsidian Sync/보안 및 개인정보 보호|보안과 프라이버시]]를 참조하세요. - 본인의 보관소를 백업하는 데 다른 서드파티 서비스를 사용하려면 [[Obsidian Sync and third-party services]]를 참조하세요. - Obsidian Sync에 문제가 있는 경우 [[Obsidian Sync 트러블슈팅]]을 참조하세요.'),\n",
" Document(metadata={'source': '여러 장치에서 노트 동기화하기.md', 'path': 'obsidian-help/ko/시작하기/여러 장치에서 노트 동기화하기.md', 'created': 1727746136.535341, 'last_modified': 1727746136.535341, 'last_accessed': 1727746143.8404388}, page_content='동기화란 노트를 여러 장치 간에 최신 상태로 유지하는 것을 의미합니다. 예를 들어 노트북과 스마트폰과 같은 여러 장치 간에 노트를 동기화하는 가장 쉬운 방법은 [[Obsidian Sync 소개|Obsidian Sync]]를 사용하는 것입니다. Obsidian Sync 구독이 이미 있는 경우 [[Obsidian Sync 설정]]를 참조하십시오. 다만 여러 동기화 서비스 (예: Obsidian Sync _및_ Dropbox)를 동시에 사용하는 경우 데이터 손실, 손상 및 기타 문제가 발생할 수 있다는 점을 유의해야 합니다. [[Obsidian Sync and third-party services||Obsidian Sync 및 타사 서비스 사용에 대해 자세히 알아보기]]. ## Sync notes across multiple desktops\\n\\n만약 Obsidian을 모바일 장치에서 사용하지 않는 경우 로컬 폴더를 클라우드 스토리지에 동기화하는 어떤 타사 서비스든 사용할 수 있습니다. 예를 들어 다음과 같은 서비스를 사용할 수 있습니다:\\n\\n- Dropbox\\n- Google Drive\\n- iCloud Drive\\n- OneDrive\\n- Syncthing\\n\\n노트를 동기화하려면 사용하는 서비스에 대한 지침을 따라 로컬 파일 시스템을 클라우드에 동기화하고, 그런 다음 모든 데스크탑 장치에서 기존 보관소를 열도록 하십시오. ## Sync your notes on iPhone and iPad\\n\\niPhone 또는 iPad에서 노트를 동기화하려면 다음 옵션 중에서 공식 지원되는 옵션을 사용할 수 있습니다. - [[Obsidian Sync 소개|Obsidian Sync]]\\n- [[#iCloud Drive]]\\n\\n**참고:** 다음 서비스는 공식으로 지원되지 않습니다. 이러한 서비스 중 하나를 사용하여 iOS 장치에서 노트를 동기화하는 방법을 발견하면 Obsidian 커뮤니티 채널에서 알려 주세요. - Dropbox\\n- Google Drive\\n- OneDrive\\n- Syncthing\\n\\n### iCloud Drive\\n\\nObsidian은 로컬 파일 시스템으로 iCloud Drive를 사용할 수 있습니다. macOS에서 iCloud Drive를 사용할 때, 데스크탑 앱의 설치 버전을 v0.13.0 이상으로 업데이트해야 합니다. > [!note]\\n> iCloud 저장 용량 제한을 초과하지 마십시오. 동기화가 중지될 수 있습니다. #### Create a new vault in iCloud Drive\\n\\niPhone 또는 iPad에서 iCloud Drive에 새로운 보관소를 만들려면 다음 단계를 수행하십시오:\\n\\n1. **새로운 보관소 생성**(Create new vault) 를 탭합니다. 2. **보관소 이름**(Vault name)에 보관소 이름을 입력합니다. 3. **iCloud에 저장**을 활성화합니다. 4. **생성**(Create)를 탭합니다. Obsidian은 iCloud Drive 내부에 새로운 폴더를 만들었습니다. 컴퓨터에서 iCloud Drive 폴더를 기존 보관소로 열려면 다음을 수행하십시오:\\n\\n1. 컴퓨터에서 **Obsidian**을 엽니다. 2. **보관소로 폴더 열기**(Open folder as vault)의 오른쪽에서 **열기**를 선택합니다. 3. **iCloud Drive → Obsidian**로 이동합니다. 4. 동기화하려는 보관소 이름과 동일한 폴더를 선택합니다. #### Sync an existing vault with iCloud Drive\\n\\n기존 보관소를 iCloud를 사용하여 동기화하려면 iCloud Drive에서 빈 보관소를 만들고 그 빈 보관소로 다른 장치의 노트를 이동해야 합니다. iCloud Drive에서 새로운 빈 보관소를 만들려면 다음을 수행하십시오:\\n\\n1. **새로운 보관소 생성**(Create new vault)를 탭합니다.'),\n",
" Document(metadata={'source': '로컬 및 원격 보관소.md', 'path': 'obsidian-help/ko/Obsidian Sync/로컬 및 원격 보관소.md', 'created': 1727746136.530145, 'last_modified': 1727746136.530145, 'last_accessed': 1727746143.3151577}, page_content='Obsidian은 노트를 컴퓨터의 로컬 보관소에 저장합니다. 다른 장치에서 노트에 액세스하려면 로컬 보관소를 해당 장치와 공유해야 합니다. [[Obsidian Sync 소개|Obsidian Sync]]은 Obsidian의 서버에 존재하는 원격 보관소와 로컬 보관소을 동기화함으로써 이를 더 쉽게 만들어줍니다. 여러 로컬 보관소를 원격 보관소에 연결할 수 있습니다.')]"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# BAAI/bge-reranker-v2-m3\n",
"from langchain.retrievers import ContextualCompressionRetriever\n",
"from langchain.retrievers.document_compressors import CrossEncoderReranker\n",
"from langchain_community.cross_encoders import HuggingFaceCrossEncoder\n",
"\n",
"model = HuggingFaceCrossEncoder(model_name=\"BAAI/bge-reranker-v2-m3\")\n",
"compressor = CrossEncoderReranker(model=model, top_n=3)\n",
"\n",
"compression_retriever = ContextualCompressionRetriever(\n",
" base_compressor=compressor,\n",
" base_retriever=retriever,\n",
")\n",
"\n",
"compression_retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:sentence_transformers.cross_encoder.CrossEncoder:Use pytorch device: mps\n",
"Batches: 100%|██████████| 2/2 [00:41<00:00, 20.71s/it]\n"
]
},
{
"data": {
"text/plain": [
"[Document(metadata={'source': 'Obsidian Sync 소개.md', 'path': 'obsidian-help/ko/Obsidian Sync/Obsidian Sync 소개.md', 'created': 1727746136.5296974, 'last_modified': 1727746136.5296974, 'last_accessed': 1727746143.3155391, 'aliases': \"['Obsidian Sync']\"}, page_content='\\n[Obsidian Sync](https://obsidian.md/sync)는 Obsidian의 서버에 노트를 저장하고 여러 기기 간에 동기화할 수 있게 해주는 클라우드 기반 서비스입니다. > [!important]\\n> Obsidian Sync를 Dropbox, Google Drive 또는 OneDrive와 같은 다른 클라우드 스토리지 공급자와 함께 사용하는 경우, [[Obsidian Sync and third-party services]]를 참조하여 동기화 충돌을 피하세요. Obsidian Sync에 대해 자세히 알아보세요:\\n\\n- Obsidian Sync 사용자가 처음이라면 [[Obsidian Sync 설정]] 방법을 배워보세요. - 무엇을 동기화할지 구성하려면 [[동기화할 파일 및 설정 선택]]를 참조하세요. - 다른 기기에서 Obsidian Sync를 설정하는 방법을 알고 싶다면 [[다른 기기에서 Obsidian Sync 동기화 설정]]을 참조하세요. - 노트의 이전 버전을 보거나 복원하는 방법을 알고 싶다면 [[버전 내역|버전 내역]]를 참조하세요. - 노트를 안전하게 보호하는 방법을 알고 싶다면 [[Obsidian Sync/보안 및 개인정보 보호|보안과 프라이버시]]를 참조하세요. - 본인의 보관소를 백업하는 데 다른 서드파티 서비스를 사용하려면 [[Obsidian Sync and third-party services]]를 참조하세요. - Obsidian Sync에 문제가 있는 경우 [[Obsidian Sync 트러블슈팅]]을 참조하세요.'),\n",
" Document(metadata={'source': '로컬 및 원격 보관소.md', 'path': 'obsidian-help/ko/Obsidian Sync/로컬 및 원격 보관소.md', 'created': 1727746136.530145, 'last_modified': 1727746136.530145, 'last_accessed': 1727746143.3151577}, page_content='Obsidian은 노트를 컴퓨터의 로컬 보관소에 저장합니다. 다른 장치에서 노트에 액세스하려면 로컬 보관소를 해당 장치와 공유해야 합니다. [[Obsidian Sync 소개|Obsidian Sync]]은 Obsidian의 서버에 존재하는 원격 보관소와 로컬 보관소을 동기화함으로써 이를 더 쉽게 만들어줍니다. 여러 로컬 보관소를 원격 보관소에 연결할 수 있습니다.'),\n",
" Document(metadata={'source': '여러 장치에서 노트 동기화하기.md', 'path': 'obsidian-help/ko/시작하기/여러 장치에서 노트 동기화하기.md', 'created': 1727746136.535341, 'last_modified': 1727746136.535341, 'last_accessed': 1727746143.8404388}, page_content=\"### Why can't I sync using X? 다른 서비스를 파일 동기화에 사용하는 경우가 많고 이를 사용하여 노트를 동기화하려는 경우를 이해합니다. Obsidian은 iOS에서 다른 Markdown 편집기와는 다르게 작동합니다. 1Writer 및 iA Writer와 같은 편집기는 한 번에 한 노트만 액세스하므로 내장된 문서 지원을 사용할 수 있습니다. 반면 Obsidian의 많은 기능은 보관소 전체에 액세스해야 합니다. 예를 들어 파일 이름을 변경하면 Obsidian은 해당 파일에 링크된 보관소의 모든 파일을 업데이트해야 합니다. 지원되지 않는 위치 외부의 수천 개의 노트로 구성된 전체 폴더 구조를 읽고 수정하고 모니터링하는 시스템을 구현하는 것은 복잡합니다. 이 제한 사항을 앞으로 해결할 계획입니다. 개발자라면 각 개별 동기화 서비스에 대한 Web API를 사용하는 플러그인을 빌드할 수 있습니다. ### Where are my vaults stored? 보관소를 만들 때 iCloud Drive를 사용하지 않을 경우 Obsidian은 Obsidian 앱의 로컬 파일 시스템에 저장합니다. 다른 앱인 [[#Working Copy]]과 같은 앱은 파일 시스템에서 보관소를 선택하여 액세스할 수 있습니다. **주의:** 로컬 파일 시스템에 저장된 노트는 Obsidian 앱을 삭제할 때 iOS에서 삭제됩니다. 앱을 삭제하기 전에 노트를 백업해야 합니다. ## Sync notes on Android\\n\\nAndroid 장치에서 노트를 동기화하는 가장 쉬운 방법은 [[Obsidian Sync 소개|Obsidian Sync]]를 사용하는 것입니다. Obsidian은 Android 장치의 로컬 폴더에 노트를 저장하므로 폴더 동기화를 허용하는 앱을 사용할 수도 있습니다. 예를 들어 다음과 같은 앱을 사용할 수 있습니다. - [Dropsync](https://play.google.com/store/apps/details?id=com.ttxapps.dropsync)\\n- [FolderSync](https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite)\\n\\n**Note:** Obsidian은 공용 문서 폴더에서 Obsidian 폴더를 생성합니다. `Documents/Obsidian` 아래의 폴더는 모두 Obsidian 보관소로 간주됩니다. > [!important] Dealing with on-demand cloud storage\\n> 일부 클라우드 스토리지 서비스(예: OneDrive)는 사용할 때만 파일을 다운로드하고 나중에 로컬에서 제거하여 공간을 확보하는 방식으로 작동합니다. 파일이 더 이상 로컬에서 사용할 수 없으므로 Obsidian Sync는 파일이 삭제된 것으로 간주하고 원격 보관소에서 삭제합니다. >\\n>Files On-Demand 및 유사한 기능을 사용하여 Obsidian Sync를 사용하려면 서비스를 항상 파일을 기기에 유지하도록 구성하십시오. \")]"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# upskyy/ko-reranker-8k\n",
"# - ko-reranker-8k는 BAAI/bge-reranker-v2-m3 모델에 한국어 데이터를 finetuning 한 model \n",
"from langchain.retrievers import ContextualCompressionRetriever\n",
"from langchain.retrievers.document_compressors import CrossEncoderReranker\n",
"from langchain_community.cross_encoders import HuggingFaceCrossEncoder\n",
"\n",
"model = HuggingFaceCrossEncoder(model_name=\"upskyy/ko-reranker-8k\")\n",
"compressor = CrossEncoderReranker(model=model, top_n=3)\n",
"\n",
"compression_retriever = ContextualCompressionRetriever(\n",
" base_compressor=compressor,\n",
" base_retriever=retriever,\n",
")\n",
"\n",
"compression_retriever.invoke(\"옵시디언 노트를 싱크하는 방법은?\")"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:httpx:HTTP Request: POST http://127.0.0.1:11434/api/chat \"HTTP/1.1 200 OK\"\n"
]
},
{
"data": {
"text/plain": [
"AIMessage(content='안녕하세요! 어떻게 도와드릴까요?', additional_kwargs={}, response_metadata={'model': 'anpigon/qwen2.5-7b-instruct-kowiki:q8_0', 'created_at': '2024-10-04T02:33:51.383095Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 23088056666, 'load_duration': 19308699041, 'prompt_eval_count': 35, 'prompt_eval_duration': 1872357000, 'eval_count': 12, 'eval_duration': 1407428000}, id='run-84a7bdb8-5f30-4797-820c-a096b5fea911-0', usage_metadata={'input_tokens': 35, 'output_tokens': 12, 'total_tokens': 47})"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from langchain_ollama import ChatOllama\n",
"\n",
"llm = ChatOllama(model=\"anpigon/qwen2.5-7b-instruct-kowiki:q8_0\", temperature=0)\n",
"\n",
"llm.invoke(\"안녕!\")"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"def format_docs(docs):\n",
" return \"\\n\\n\".join(doc.page_content for doc in docs)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"from langchain_core.prompts import PromptTemplate\n",
"from langchain_core.runnables import RunnablePassthrough\n",
"from langchain_core.output_parsers import StrOutputParser\n",
"from langchain.retrievers import ContextualCompressionRetriever\n",
"from langchain_cohere import CohereRerank\n",
"\n",
"prompt = PromptTemplate.from_template(\"\"\"\n",
"You are a helpful, respectful and honest assistant for question-answering tasks. \n",
"Always answer as helpfully as possible, while being safe. \n",
"Your answers should not include any harmful, unethical, racist, sexist, toxic, dangerous, or illegal information. \n",
"Please ensure that your responses are socially unbiased and positive in nature.\n",
"Use the following pieces of retrieved CONTEXT to answer the question. \n",
"If you don't know the answer, just say that you don't know. \n",
"Answer me in Korean. \n",
"\n",
"<CONTEXT>\n",
"{context} \n",
"</CONTEXT> \n",
"\n",
"Question: {question}\n",
"Answer: \n",
"\"\"\")\n",
"\n",
"compressor = CohereRerank(model=\"rerank-multilingual-v3.0\", top_n=20)\n",
"compression_retriever = ContextualCompressionRetriever(\n",
" base_compressor=compressor, base_retriever=retriever\n",
")\n",
"\n",
"rag_chain = (\n",
" {\"context\": compression_retriever | format_docs, \"question\": RunnablePassthrough()}\n",
" | prompt\n",
" | llm\n",
" | StrOutputParser()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:httpx:HTTP Request: POST https://api.cohere.com/v1/rerank \"HTTP/1.1 200 OK\"\n",
"INFO:httpx:HTTP Request: POST http://127.0.0.1:11434/api/chat \"HTTP/1.1 200 OK\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Obsidian에서 노트를 Sync하는 과정은 다음과 같습니다:\n",
"\n",
"1. **Obsidian Sync 계정 생성**: Obsidian 웹사이트(https://obsidian.md/sync)에서 무료 계정을 만듭니다.\n",
"2. **Obsidian 앱 설정**: Obsidian 앱의 **설정** 페이지로 이동하고 **동기화** 섹션을 클릭합니다.\n",
"3. **Sync 활성화**: **Obsidian Sync 활성화** 스위치를 켭니다.\n",
"4. **계정 연결**: 이전 단계에서 생성한 Obsidian Sync 계정 정보(이메일 주소와 암호)를 입력합니다.\n",
"5. **클라우드 스토리지 선택 (선택 사항)**: 원격 백업을 위해 Google Drive, Dropbox, OneDrive 등의 클라우드 스토리지를 연결할 수 있습니다.\n",
"6. **Sync 폴더 설정**: 로컬 컴퓨터의 Obsidian 노트 데이터 파일이 저장된 디렉토리를 Sync 폴더로 지정합니다.\n",
"7. **변경 사항 저장**: 노트에 변경 사항을 만들면 Obsidian은 자동으로 로컬 컴퓨터와 선택한 클라우드 스토리지(있는 경우)에 동기화합니다.\n",
"\n",
"Sync가 활성화되면:\n",
"\n",
"- 여러 기기에서 동일한 노트 데이터베이스에 액세스할 수 있습니다.\n",
"- 한 기기에서 노트를 편집하면 다른 모든 Sync된 기기에서도 실시간으로 변경 사항이 반영됩니다.\n",
"- 로컬 컴퓨터의 노트 백업과 클라우드 스토리지의 백업을 둘 다 유지할 수 있습니다.\n",
"\n",
"Sync 설정은 언제든지 **설정 > 동기화**에서 확인하고 수정할 수 있습니다. \n",
"\n",
"참고로, 옵시디언 무료 버전에서는 한 달에 최대 1GB까지 Sync할 수 있고, 유료 구독(월 $4.99)으로 저장 용량 제한을 해제할 수 있습니다.\n"
]
}
],
"source": [
"print(rag_chain.invoke(\"옵시디언 노트를 싱크하는 방법은?\"))"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:httpx:HTTP Request: POST https://api.cohere.com/v1/rerank \"HTTP/1.1 200 OK\"\n",
"INFO:httpx:HTTP Request: POST http://127.0.0.1:11434/api/chat \"HTTP/1.1 200 OK\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Obsidian에서 노트를 Sync하는 과정은 다음과 같습니다:\n",
"\n",
"1. **Obsidian Sync 계정 생성**: Obsidian 웹사이트(https://obsidian.md/sync)에서 무료 계정을 만듭니다.\n",
"2. **Obsidian 앱에서 설정 메뉴 열기**: Windows, macOS 또는 Linux에서 각각의 경우 Ctrl+/, Cmd+/ 또는 단축키를 사용하여 설정 메뉴를 엽니다.\n",
"3. **Sync 옵션 선택**: \"Sync\" 섹션으로 이동한 다음 \"Sync enabled\" 체크박스를 활성화합니다.\n",
"4. **Sync 계정 연결**: \"Sync account\" 아래에서 \"Connect to Sync account\" 버튼을 클릭하고 이전에 만든 Obsidian Sync 계정의 이메일 주소와 암호를 입력합니다.\n",
"5. **원격 보관소 선택 (선택 사항)**: 원격 보관소를 로컬 저장소와 함께 사용할 경우, \"Remote vaults\" 섹션에서 추가 보관소를 연결할 수 있습니다.\n",
"6. **Sync 시작**: 설정 메뉴를 닫으면 Obsidian은 자동으로 모든 개방된 노트를 초기 Sync에 전송합니다.\n",
"\n",
"이후 변경 사항은 다음과 같이 실시간으로 Sync됩니다:\n",
"\n",
"- 노트 편집\n",
"- 새로운 노트 또는 페이지 생성\n",
"- 파일 이름 변경\n",
"- 폴더 구조 수정\n",
"\n",
"Obsidian Sync는 인터넷 연결이 끊기면 로컬 데이터를 캐시하고 다시 온라인 상태가 되면 자동으로 Sync합니다.\n",
"\n",
"주의할 점:\n",
"- 옵시디언 프리미엄 구독 없이는 최대 1GB의 저장 공간만 사용 가능합니다.\n",
"- 개인 정보 보호를 위해 Obsidian Sync는 암호화된 통신을 사용합니다.\n",
"- 원격 보관소에 연결하려면 인터넷 접속이 필요합니다. \n",
"- 로컬 데이터와 원격 보관소 간의 양방향 동기화를 위해 주기적으로 전체 시스템 체크가 좋습니다. \n",
"\n",
"Sync 문제 해결에 대해서는 [Obsidian 공식 문서](https://docs.obsidian.md/Help#sync-troubleshooting)에서 자세한 정보를 찾을 수 있습니다.\n"
]
}
],
"source": [
"llm = ChatOllama(model=\"antegral/llama-varco\", temperature=0)\n",
"rag_chain = (\n",
" {\"context\": compression_retriever | format_docs, \"question\": RunnablePassthrough()}\n",
" | prompt\n",
" | llm\n",
" | StrOutputParser()\n",
")\n",
"print(rag_chain.invoke(\"옵시디언 노트를 싱크하는 방법은?\"))"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:httpx:HTTP Request: POST https://api.cohere.com/v1/rerank \"HTTP/1.1 200 OK\"\n",
"INFO:httpx:HTTP Request: POST http://127.0.0.1:11434/api/chat \"HTTP/1.1 200 OK\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Obsidian의 무료 버전인 Obsidian MD에서 노트를 싱크하려면 다음과 같은 옵션이 있습니다:\n",
"\n",
"1. **GitHub repositories 사용하기:** \n",
" - GitHub 계정에 무료로 존재할 수 있습니다.\n",
" - Obsidian 설정에서 'Sync' > 'Remote Storage' > 'GitHub'을 선택합니다.\n",
" - 저장소 이름과 리포지토리 권한 설정을 합니다.\n",
"\n",
"2. **GitLab repositories 사용하기:**\n",
" - GitLab Community Edition은 무료로 이용 가능합니다.\n",
" - 위의 GitHub 방법과 동일하게 Obsidian 설정에서 GitLab를 선택합니다.\n",
"\n",
"3. **Nextcloud 또는 Self-Hosted WebDAV 서버 사용하기:**\n",
" - Nextcloud와 같은 클라우드 서비스나 자체 호스팅한 WebDAV 서버가 필요합니다.\n",
" - WebDAV 연결 설정을 위해 Obsidian의 'Sync' > 'Remote Storage' > 'WebDAV'로 이동합니다.\n",
"\n",
"4. **OneDrive (Free) 사용하기:**\n",
" - OneDrive 기본 저장 공간(5GB)은 무료입니다.\n",
" - Obsidian 설정에서 'Sync' > 'Remote Storage' > 'OneDrive'를 선택하고 계정에 로그인합니다.\n",
"\n",
"이 중 어느 방법을 선택하든, 초기 설정에는 약간의 시간이 걸릴 수 있습니다. 하지만 이후에는 Obsidian이 자동으로 변경 사항을 싱크해줍니다.\n",
"\n",
"참고로, Obsidian MD의 무료 버전에서는 다음과 같은 제한 사항이 있습니다:\n",
"\n",
"- 최대 5개 파일 동시 싱크\n",
"- 하루 최대 1GB 데이터 전송량\n",
"- 특정 기능(예: 태그 필터링, 그래프 뷰) 제한\n",
"\n",
"Obsidian Pro로 업그레이드하면 이러한 제한을 해제할 수 있습니다.\n"
]
}
],
"source": [
"print(rag_chain.invoke(\"옵시디언 노트를 무료료 싱크하는 방법은?\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 할루시네이션 체크\n",
"\n",
"- 업스테이지 API 키 발급: https://console.upstage.ai/api-keys\n",
"- 소스코드: [UpstageGroundednessCheck](https://api.python.langchain.com/en/latest/_modules/langchain_upstage/tools/groundedness_check.html#UpstageGroundednessCheck)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
"from langchain_upstage import UpstageGroundednessCheck\n",
"\n",
"upstage_groundedness_check = UpstageGroundednessCheck()"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:httpx:HTTP Request: POST https://api.cohere.com/v1/rerank \"HTTP/1.1 200 OK\"\n",
"INFO:httpx:HTTP Request: POST https://api.upstage.ai/v1/solar/chat/completions \"HTTP/1.1 200 OK\"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"notSure\n"
]
}
],
"source": [
"request_input = {\n",
" \"context\": format_docs(\n",
" compression_retriever.invoke(\"옵시디언 노트를 무료료 싱크하는 방법은?\")\n",
" ),\n",
" \"answer\": \"\"\"Obsidian의 무료 버전인 Obsidian MD에서 노트를 싱크하려면 다음과 같은 옵션이 있습니다:\n",
"\n",
"1. **GitHub repositories 사용하기:** \n",
" - GitHub 계정에 무료로 존재할 수 있습니다.\n",
" - Obsidian 설정에서 'Sync' > 'Remote Storage' > 'GitHub'을 선택합니다.\n",
" - 저장소 이름과 리포지토리 권한 설정을 합니다.\n",
"\n",
"2. **GitLab repositories 사용하기:**\n",
" - GitLab Community Edition은 무료로 이용 가능합니다.\n",
" - 위의 GitHub 방법과 동일하게 Obsidian 설정에서 GitLab를 선택합니다.\n",
"\n",
"3. **Nextcloud 또는 Self-Hosted WebDAV 서버 사용하기:**\n",
" - Nextcloud와 같은 클라우드 서비스나 자체 호스팅한 WebDAV 서버가 필요합니다.\n",
" - WebDAV 연결 설정을 위해 Obsidian의 'Sync' > 'Remote Storage' > 'WebDAV'로 이동합니다.\n",
"\n",
"4. **OneDrive (Free) 사용하기:**\n",
" - OneDrive 기본 저장 공간(5GB)은 무료입니다.\n",
" - Obsidian 설정에서 'Sync' > 'Remote Storage' > 'OneDrive'를 선택하고 계정에 로그인합니다.\n",
"\n",
"이 중 어느 방법을 선택하든, 초기 설정에는 약간의 시간이 걸릴 수 있습니다. 하지만 이후에는 Obsidian이 자동으로 변경 사항을 싱크해줍니다.\n",
"\n",
"참고로, Obsidian MD의 무료 버전에서는 다음과 같은 제한 사항이 있습니다:\n",
"\n",
"- 최대 5개 파일 동시 싱크\n",
"- 하루 최대 1GB 데이터 전송량\n",
"- 특정 기능(예: 태그 필터링, 그래프 뷰) 제한\n",
"\n",
"Obsidian Pro로 업그레이드하면 이러한 제한을 해제할 수 있습니다.\"\"\",\n",
"}\n",
"\n",
"response = upstage_groundedness_check.invoke(request_input)\n",
"print(response) # grounded 또는 notGrounded, notSure"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "obsidian-rag-FsuvQ4pV-py3.11",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment