이 두 클래스는 상속 관계에 있으며, 데이터와 메타데이터를 관리하기 위한 계층 구조를 형성합니다. BaseMedia
는 미디어 데이터에 대한 기본 구조와 속성을 정의하는 추상적인 베이스 클래스 역할을 하고, Document
는 이를 확장하여 텍스트 문서 데이터와 관련된 구체적인 기능과 속성을 추가하는 역할을 합니다.
1. BaseMedia
클래스의 역할
BaseMedia
는 미디어 데이터의 기본 구조를 정의하는 추상적이고 상위 개념의 클래스로, 다른 미디어 데이터 관련 클래스들이 상속받을 수 있도록 설계된 베이스 클래스입니다. 여기에는 데이터나 파일의 메타데이터와 ID와 같은 공통된 속성을 정의하고, 그 데이터를 구조화하거나 검색하는 데 필요한 기능을 제공합니다.
BaseMedia
의 주요 특징:
- ID: 각 미디어 데이터에 고유한 식별자를 부여할 수 있는
id
속성을 포함합니다. - 메타데이터: 미디어 데이터에 연결된 추가 정보를
metadata
속성으로 관리합니다. - 상속의 베이스 역할:
BaseMedia
는 다양한 미디어 데이터 유형에 대해 기본적인 속성과 기능을 정의함으로써, 이를 상속받는 클래스들이 공통 기능을 재사용하고 추가 기능을 구현할 수 있도록 합니다.
예시 코드
from typing import Optional
# BaseMedia 클래스가 다양한 미디어 유형의 기본 데이터와 메타데이터를 관리하는 예시
media_data = BaseMedia(
id="12345",
metadata={
"source": "https://example.com",
"author": "Alice",
"license": "Creative Commons"
}
)
print("Media ID:", media_data.id) # Media ID: 12345
print("Media Metadata:", media_data.metadata) # Media Metadata: {'source': 'https://example.com', 'author': 'Alice', 'license': 'Creative Commons'}
# media_data 객체는 기본적으로 데이터나 파일의 메타정보만 저장하며, 미디어의 구체적인 내용을 다루지는 않음
이 예시에서는 BaseMedia를 사용하여 미디어 데이터의 ID와 메타데이터를 관리합니다. BaseMedia는 구체적인 데이터 내용보다는 해당 미디어의 메타정보를 저장하고 전달하는 데 중점을 둡니다. 다른 클래스들이 이를 상속받아 세부 구현을 추가할 수 있습니다.
2. Document
클래스의 역할
Document
클래스는 BaseMedia
를 상속받아 텍스트 문서 데이터를 관리하기 위한 구체적인 구현을 제공하는 서브클래스입니다. BaseMedia
에서 정의한 공통 속성(id
와 metadata
)에 문서 데이터에 특화된 추가적인 속성(page_content
)을 추가하고, 텍스트와 관련된 기능을 구현합니다.
Document
의 주요 특징:
page_content
속성: 문서의 텍스트 내용을 저장하는page_content
속성을 추가합니다. 이는 문서의 실제 데이터를 담고 있습니다.- 메타데이터 상속 및 확장:
Document
는BaseMedia
의metadata
속성을 상속받아 문서의 출처나 기타 관련 정보를 저장할 수 있습니다. - 특정 문서 유형 정의: 문서 데이터의 타입을 "Document"로 명시하여, 다양한 미디어 클래스들 사이에서 텍스트 문서임을 명확히 구분할 수 있습니다.
예시 코드
# Document 클래스가 텍스트 문서 데이터를 저장하고 메타데이터를 관리하는 예시
document = Document(
page_content="This is a sample document.",
metadata={
"source": "https://example.com/docs/sample",
"author": "Bob",
"keywords": ["sample", "document", "text"]
}
)
print("Document Content:", document.page_content) # Document Content: This is a sample document.
print("Document Metadata:", document.metadata) # Document Metadata: {'source': 'https://example.com/docs/sample', 'author': 'Bob', 'keywords': ['sample', 'document', 'text']}
print("Document Type:", document.type) # Document Type: Document
이 예시에서는 Document 클래스가 텍스트 문서 데이터를 직접 저장하고 이를 출력하는 역할을 합니다. page_content 속성에 문서의 본문 내용을 저장하고, metadata 속성을 통해 문서의 추가 정보(출처, 키워드 등)를 저장합니다.
BaseMedia
와 Document
클래스의 관계 및 역할 비교
클래스 | 역할 | 주요 속성 | 기능 |
---|---|---|---|
BaseMedia |
미디어 데이터를 관리하기 위한 기본 구조를 정의, 다른 미디어 클래스들의 상위 클래스 역할 | id , metadata |
공통 기능 제공 |
Document |
텍스트 문서 데이터를 관리하기 위해 BaseMedia 를 확장한 구체적인 클래스 |
page_content , type |
문서 관련 기능 |
BaseMedia
는 공통된 속성과 기본 기능을 정의하는 추상적인 베이스 클래스이며, 미디어 데이터 전반에 걸쳐 사용할 수 있는 구조를 제공합니다.Document
는BaseMedia
를 확장하여 텍스트 데이터를 담는 구체적인 클래스로, 텍스트 문서에 특화된 추가 속성과 메서드를 정의합니다.
'langchain 공부' 카테고리의 다른 글
Faiss 모듈 내 코드 분석1 (0) | 2024.11.11 |
---|---|
벡터 DB 유사도 측정 방식 총 정리(L2 Distance,Inner Product, Cosine,Jaccard) (5) | 2024.11.10 |
InMemoryDocstore 내부 코드 분석 (1) | 2024.11.07 |
invoke와 get_relevant_documents의 차이 (1) | 2024.10.16 |
서버 없는 초 저비용 rag 인프라 구상 (0) | 2024.09.26 |