llama-index

Форк
0
40 строк · 1.3 Кб
1
"""Obsidian reader class.
2

3
Pass in the path to an Obsidian vault and it will parse all markdown
4
files into a List of Documents,
5
with each Document containing text from under an Obsidian header.
6

7
"""
8

9
import os
10
from pathlib import Path
11
from typing import Any, List
12

13
from llama_index.legacy.readers.base import BaseReader
14
from llama_index.legacy.readers.file.markdown_reader import MarkdownReader
15
from llama_index.legacy.schema import Document
16

17

18
class ObsidianReader(BaseReader):
19
    """Utilities for loading data from an Obsidian Vault.
20

21
    Args:
22
        input_dir (str): Path to the vault.
23

24
    """
25

26
    def __init__(self, input_dir: str):
27
        """Init params."""
28
        self.input_dir = Path(input_dir)
29

30
    def load_data(self, *args: Any, **load_kwargs: Any) -> List[Document]:
31
        """Load data from the input directory."""
32
        docs: List[Document] = []
33
        for dirpath, dirnames, filenames in os.walk(self.input_dir):
34
            dirnames[:] = [d for d in dirnames if not d.startswith(".")]
35
            for filename in filenames:
36
                if filename.endswith(".md"):
37
                    filepath = os.path.join(dirpath, filename)
38
                    content = MarkdownReader().load_data(Path(filepath))
39
                    docs.extend(content)
40
        return docs
41

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.