98 lines
8.0 KiB
Markdown
98 lines
8.0 KiB
Markdown
|
|
## ClassDef KnowledgeFileModel
|
|||
|
|
**KnowledgeFileModel**: KnowledgeFileModel类用于表示知识库中的文件信息。
|
|||
|
|
|
|||
|
|
**属性**:
|
|||
|
|
- `id`: 知识文件的唯一标识ID。
|
|||
|
|
- `file_name`: 文件名。
|
|||
|
|
- `file_ext`: 文件扩展名。
|
|||
|
|
- `kb_name`: 所属知识库的名称。
|
|||
|
|
- `document_loader_name`: 文档加载器的名称。
|
|||
|
|
- `text_splitter_name`: 文本分割器的名称。
|
|||
|
|
- `file_version`: 文件版本。
|
|||
|
|
- `file_mtime`: 文件的最后修改时间。
|
|||
|
|
- `file_size`: 文件大小。
|
|||
|
|
- `custom_docs`: 标识是否为自定义文档。
|
|||
|
|
- `docs_count`: 切分文档的数量。
|
|||
|
|
- `create_time`: 文件的创建时间。
|
|||
|
|
|
|||
|
|
**代码描述**:
|
|||
|
|
KnowledgeFileModel类继承自Base类,是一个ORM模型,用于映射数据库中的`knowledge_file`表。该模型定义了与知识文件相关的各种属性,包括文件名、文件扩展名、所属知识库名称、文档加载器名称、文本分割器名称等。此外,还包括文件的版本、修改时间、大小、是否自定义文档、切分文档数量以及创建时间等信息。
|
|||
|
|
|
|||
|
|
在项目中,KnowledgeFileModel类被多个函数调用,主要涉及到知识文件的增删查改操作。例如,`count_files_from_db`函数用于统计某个知识库中的文件数量,`list_files_from_db`函数用于列出某个知识库中的所有文件名,`add_file_to_db`函数用于向数据库中添加新的知识文件或更新现有文件的信息,`delete_file_from_db`和`delete_files_from_db`函数用于从数据库中删除指定的文件或某个知识库中的所有文件,`file_exists_in_db`函数用于检查某个文件是否已存在于数据库中,`get_file_detail`函数用于获取某个文件的详细信息。
|
|||
|
|
|
|||
|
|
**注意**:
|
|||
|
|
- 在使用KnowledgeFileModel进行数据库操作时,需要确保传入的参数符合字段定义的类型和约束。
|
|||
|
|
- 对于文件版本、修改时间和大小等信息,在更新文件信息时应注意正确维护这些字段的值,以保证数据的准确性和一致性。
|
|||
|
|
|
|||
|
|
**输出示例**:
|
|||
|
|
由于KnowledgeFileModel是一个ORM模型,直接操作该类的实例不会产生简单的输出结果。但是,当使用`__repr__`方法打印KnowledgeFileModel的实例时,可能会得到如下格式的字符串表示:
|
|||
|
|
```
|
|||
|
|
<KnowledgeFile(id='1', file_name='example.pdf', file_ext='.pdf', kb_name='DefaultKB', document_loader_name='PDFLoader', text_splitter_name='SpacyTextSplitter', file_version='1', create_time='2023-04-01 12:00:00')>
|
|||
|
|
```
|
|||
|
|
### FunctionDef __repr__(self)
|
|||
|
|
**__repr__**: 此函数的功能是生成KnowledgeFileModel对象的官方字符串表示。
|
|||
|
|
|
|||
|
|
**参数**: 此函数不接受除self之外的任何参数。
|
|||
|
|
|
|||
|
|
**代码描述**: `__repr__`方法是Python中的一个特殊方法,用于定义对象的“官方”字符串表示。在这个上下文中,`__repr__`方法被用于KnowledgeFileModel类,这是一个数据库模型类,代表知识文件。当调用此方法时,它会返回一个格式化的字符串,其中包含了KnowledgeFileModel对象的关键信息,包括:id、file_name(文件名)、file_ext(文件扩展名)、kb_name(知识库名称)、document_loader_name(文档加载器名称)、text_splitter_name(文本分割器名称)、file_version(文件版本)和create_time(创建时间)。这种字符串表示形式非常有用,尤其是在调试和日志记录中,因为它提供了对象的快速概览。
|
|||
|
|
|
|||
|
|
**注意**: `__repr__`方法返回的字符串应该尽可能地反映对象的状态,同时保持简洁明了。在实际应用中,开发者可能会根据需要调整包含在`__repr__`返回值中的属性。此外,虽然`__repr__`的主要目的是为了调试和开发,但它也可以被用于用户界面显示,尤其是在需要快速展示对象信息的场景中。
|
|||
|
|
|
|||
|
|
**输出示例**: 假设有一个KnowledgeFileModel对象,其属性值如下:
|
|||
|
|
- id: 1
|
|||
|
|
- file_name: "example.pdf"
|
|||
|
|
- file_ext: ".pdf"
|
|||
|
|
- kb_name: "General Knowledge"
|
|||
|
|
- document_loader_name: "DefaultLoader"
|
|||
|
|
- text_splitter_name: "SimpleSplitter"
|
|||
|
|
- file_version: "v1.0"
|
|||
|
|
- create_time: "2023-04-01 12:00:00"
|
|||
|
|
|
|||
|
|
调用此对象的`__repr__`方法将返回以下字符串:
|
|||
|
|
`"<KnowledgeFile(id='1', file_name='example.pdf', file_ext='.pdf', kb_name='General Knowledge', document_loader_name='DefaultLoader', text_splitter_name='SimpleSplitter', file_version='v1.0', create_time='2023-04-01 12:00:00')>"`
|
|||
|
|
***
|
|||
|
|
## ClassDef FileDocModel
|
|||
|
|
**FileDocModel**: FileDocModel类用于表示文件与向量库文档之间的关系模型。
|
|||
|
|
|
|||
|
|
**属性**:
|
|||
|
|
- `id`: 唯一标识符,自增长的整数,用于唯一标识每个文档。
|
|||
|
|
- `kb_name`: 知识库名称,字符串类型,表示该文档所属的知识库。
|
|||
|
|
- `file_name`: 文件名称,字符串类型,表示该文档对应的原始文件名。
|
|||
|
|
- `doc_id`: 向量库文档ID,字符串类型,用于标识向量库中的文档。
|
|||
|
|
- `meta_data`: 元数据,JSON类型,默认为空字典,用于存储文档的额外信息。
|
|||
|
|
|
|||
|
|
**代码描述**:
|
|||
|
|
FileDocModel类继承自Base类,是一个ORM模型,用于映射数据库中的`file_doc`表。该模型定义了与文件和向量库文档相关的基本信息字段,包括知识库名称、文件名称、文档ID以及元数据。此外,通过定义`__repr__`方法,可以提供该模型实例的友好字符串表示,便于调试和日志记录。
|
|||
|
|
|
|||
|
|
在项目中,FileDocModel类被多个函数调用,主要用于处理与数据库中文档相关的操作,如添加、查询、删除文档信息。例如,在`add_docs_to_db`函数中,通过创建FileDocModel的实例并添加到数据库会话中,实现了将文档信息添加到数据库的功能。在`list_file_num_docs_id_by_kb_name_and_file_name`函数中,通过查询FileDocModel实例,实现了根据知识库名称和文件名称列出所有对应文档ID的功能。此外,`delete_docs_from_db`和`list_docs_from_db`等函数也展示了如何利用FileDocModel进行文档的查询和删除操作。
|
|||
|
|
|
|||
|
|
**注意**:
|
|||
|
|
- 在使用FileDocModel进行数据库操作时,需要确保传入的参数类型和字段约束条件符合定义,以避免数据类型错误或约束违反的问题。
|
|||
|
|
- 在处理元数据(meta_data)字段时,考虑到其为JSON类型,应当注意正确的数据格式和解析方法,以保证元数据的有效存储和查询。
|
|||
|
|
|
|||
|
|
**输出示例**:
|
|||
|
|
假设数据库中有一条记录,其字段值如下:
|
|||
|
|
- id: 1
|
|||
|
|
- kb_name: "知识库1"
|
|||
|
|
- file_name: "文件1.pdf"
|
|||
|
|
- doc_id: "doc123"
|
|||
|
|
- meta_data: {"author": "张三", "year": "2021"}
|
|||
|
|
|
|||
|
|
则该记录的`__repr__`方法输出可能为:
|
|||
|
|
`<FileDoc(id='1', kb_name='知识库1', file_name='文件1.pdf', doc_id='doc123', metadata='{'author': '张三', 'year': '2021'}')>`
|
|||
|
|
### FunctionDef __repr__(self)
|
|||
|
|
**__repr__**: 此函数的功能是生成对象的官方字符串表示。
|
|||
|
|
|
|||
|
|
**参数**: 此函数没有参数。
|
|||
|
|
|
|||
|
|
**代码描述**: `__repr__` 方法是 Python 中的一个特殊方法,用于定义对象的“官方”字符串表示。在这个特定的实现中,`__repr__` 方法被用于 `FileDocModel` 类,该类可能代表一个与知识库文件相关的模型。此方法返回一个格式化的字符串,其中包含了对象的几个关键属性:`id`、`kb_name`(知识库名称)、`file_name`(文件名)、`doc_id`(文档ID)以及`metadata`(元数据)。这种格式化的字符串表示使得开发者能够快速识别对象的主要属性,特别是在调试过程中或者将对象输出到控制台时非常有用。
|
|||
|
|
|
|||
|
|
**注意**: 使用 `__repr__` 方法时,应确保返回的字符串能够准确反映对象的关键信息。此外,虽然此方法主要用于调试和开发,但也应注意保持返回字符串的可读性。
|
|||
|
|
|
|||
|
|
**输出示例**: 假设有一个 `FileDocModel` 对象,其属性如下:`id=1`,`kb_name='KnowledgeBase1'`,`file_name='document1.pdf'`,`doc_id='12345'`,`metadata='{"author": "John Doe", "date": "2023-04-01"}'`。调用此对象的 `__repr__` 方法将返回以下字符串:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
<FileDoc(id='1', kb_name='KnowledgeBase1', file_name='document1.pdf', doc_id='12345', metadata='{"author": "John Doe", "date": "2023-04-01"}')>
|
|||
|
|
```
|
|||
|
|
***
|