> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xpertai.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 知识库功能介绍

在 AI 对话知识检索中，知识库的核心功能通常包括文件文本嵌入、Chunk（块）检索、查询优化和实时更新等。以下是常见的功能，特别针对文件文本嵌入和 Chunk 检索做了重点介绍：

### 1. **文件文本嵌入**

* **文本向量化**：使用深度学习模型（如 BERT、OpenAI Embeddings）将文本嵌入成高维向量，使其可以通过向量检索进行相似度匹配。这是知识库实现快速检索的基础，适用于各种文本类型，如文档、网页、FAQ等。
* **多语言支持**：针对不同语言的文本，使用相应的嵌入模型，确保多语言检索的准确性。
* **数据预处理**：对文件中的文本进行清洗、分词、去噪等操作，为嵌入生成高质量的向量。
* **上下文感知嵌入**：确保嵌入模型能识别文本中的上下文，提升对话中回答的准确度。

### 2. **Chunk 检索**

* **文档分块（Chunking）**：将大文档分成更小的块（Chunk），以便提高检索的精度和效率。每个 Chunk 通常是几句话或一段文本，这样可以确保在检索过程中，系统能找到最相关的具体信息，而不是整篇文档。
* **Chunk 的嵌入与索引**：为每个 Chunk 生成独立的向量，并存储到向量数据库中进行索引。这样可以让系统在检索时，迅速找到与用户查询最相似的 Chunk。
  <img src="https://mintcdn.com/xpertai/CUk-Ab9Rv7YWeJmd/public/img/ai/rag_indexing.png?fit=max&auto=format&n=CUk-Ab9Rv7YWeJmd&q=85&s=2ddfab0b1b1e89f3ab49dfb39bb89465" alt="Rag indexing" width="2583" height="1299" data-path="public/img/ai/rag_indexing.png" />

### 3. **查询优化**

* **语义检索**：通过语义搜索技术，将用户查询转化为向量，与已嵌入的知识库内容进行相似度匹配。与传统关键字检索相比，语义检索能更好理解用户意图。
* **模糊匹配**：即使查询与文档中的表述不完全一致，系统依然能够通过向量相似性返回相关结果。
* **搜索结果重排序**：（todo）对返回结果进行重新排序，确保最相关的答案排在最前面。这通常基于向量相似度分数或其他用户交互数据（如点击率）。
  <img src="https://mintcdn.com/xpertai/CUk-Ab9Rv7YWeJmd/public/img/ai/rag_retrieval_generation.png?fit=max&auto=format&n=CUk-Ab9Rv7YWeJmd&q=85&s=1856793b7194498cd0ef9cf14b715f24" alt="Rag retrieval" width="2532" height="1299" data-path="public/img/ai/rag_retrieval_generation.png" />

### 4. **文档更新与管理**

* **实时更新**：支持知识库的动态更新，保证最新信息可以及时被检索到。自动化的文档上传与嵌入更新流程，确保知识库内容始终是最新的。
* **文档类型支持**：知识库通常支持多种文档格式，包括 PDF、Word、Markdown、纯文本等，确保能够从不同的文档源导入知识。
* **元数据管理**：（todo）为文档和 Chunk 添加元数据（如创建时间、文档类型、作者等），使系统可以通过元数据进行更精确的检索。

### 5. **知识库问答**

* **基于文档的 QA 系统**：通过检索出的文本 Chunk，结合 GPT 等模型，生成直接的答案，回答用户的问题。这种方法通常能提供基于事实、准确的回答。
* **逐步问答与上下文跟踪**：系统能够在连续对话中保留上下文，提供更连贯的回答，并根据之前的对话调整检索结果。

### 6. **扩展与集成**

* **外部数据源集成**：可以将知识库与外部数据源（如数据库、API）集成，提供动态的数据查询支持。
* **向量数据库**：（todo）使用像 FAISS、Milvus、Pinecone 这样的向量数据库，能够有效管理和检索大规模的嵌入数据。
  :::warning 🚧
  开发中
  :::

这些功能将帮助 Xpert AI 中的知识检索模块变得更加高效和智能化，特别是在处理大量文件和文本的场景中。你在设计知识库检索时，可以通过选择合适的嵌入模型和向量数据库来优化 Chunk 检索的速度与精度。

## 知识库详细设置

下面是关于知识库设置的详细配置：

| 配置项        | 说明                                                          |
| ---------- | ----------------------------------------------------------- |
| **头像**     | 知识库的标识图标，通常为 logo 或代表性的图片。                                  |
| **名称**     | 知识库的名称，用于标识和区分不同知识库。                                        |
| **描述**     | 对知识库的简短描述，概述其内容和用途。                                         |
| **语言**     | 知识库使用的主要语言，如中文、英文等。                                         |
| **权限**     | 知识库的访问权限设置，选项包括： <br /> - *私有* <br /> - *组织内* <br /> - *公开* |
| **智能助理**   | 用于提供文本嵌入功能的智能助理，指明所使用的 AI 提供商。                              |
| **嵌入模型**   | 用于文本嵌入的 AI 模型，依赖于选择的智能助理（即 AI 提供商）。                         |
| **嵌入批量大小** | 每次处理文本嵌入的数量，影响处理效率和性能。                                      |
| **区块大小**   | 将文档分割成 Chunk 的大小，通常以句子或段落为单位。                               |
| **区块重叠**   | 指定相邻 Chunk 之间的重叠部分，以保持上下文连贯性。                               |
| **相似度阈值**  | 在检索文本块时，对结果进行相似度值的过滤，设定一个阈值以决定返回的 Chunk。                    |

## 文档

以下是文档和解析功能的详细介绍，包括上传文档、文档解析以及相关操作的配置：

### 1. 上传文档

用户可以将各种格式的文档上传到知识库中。支持的文档类型包括：

* **Markdown**：用于轻量级标记语言文档，易于阅读和编辑。
* **PDF**：便于保存格式固定的文档，适合长篇文章和报告。
* **EPUB**：电子书格式，支持多种设备阅读。
* **DOCX**：Microsoft Word 文档，广泛用于文本编辑和排版。

### 2. 文档解析

上传的文档需要进行解析，以便将其内容提取并存储到知识库中。解析过程可进行以下配置：

| 配置项      | 描述                                     |
| -------- | -------------------------------------- |
| **区块大小** | 每个文本块的大小设置（字数或句子数），用于将文档内容拆分成更小的块以便检索。 |
| **区块重叠** | 定义相邻文本块之间的重叠字数，确保上下文的连贯性，避免信息丢失。       |
| **分隔符**  | 定义如何在文档中进行块分隔，例如按段落、换行符或特定字符。          |

### 3. 启动解析

一旦配置完成，用户可以启动解析。解析任务将在服务器端运行，系统会执行以下步骤：

* **读取文档**：加载上传的文档，进行格式解析。
* **提取内容**：根据配置的区块大小、区块重叠和分隔符，将文档内容拆分成多个文本块。
* **嵌入生成**：调用 AI 模型为每个文本块生成向量嵌入，以便后续的检索和查询使用。

### 4. 重新解析或删除文档

* **重新解析**：用户可以随时选择重新解析某个文档，更新其配置或内容。这将重新执行解析过程，并替换旧的文档块。
* **删除文档**：用户可以删除不再需要的文档，系统将自动删除与之关联的所有文档块。这确保了知识库内容的整洁和准确性。

## 检索测试

检索测试功能用于验证知识库的检索效果和准确性，确保系统能够有效地从知识库中获取相关信息。以下是该功能的详细参数介绍：

| 参数        | 描述                                                        |
| --------- | --------------------------------------------------------- |
| **相似度阈值** | 设定一个最小相似度值，只有检索结果的相似度高于该值，才能被返回。                          |
| **前多少**   | 指定返回的结果数量，系统会根据相似度从高到低排序，返回前 N 个最相关的结果。                   |
| **输入**    | 用户输入的查询文本，用于触发检索功能。系统将分析该输入并计算其与知识库中内容的相似度，以便找到相关的文本块或信息。 |

### 功能流程：

1. **输入**：用户在输入框中输入查询内容。
2. **相似度计算**：系统将用户输入文本向量化，并与知识库中所有文本块进行相似度计算。
3. **过滤**：根据设定的相似度阈值，过滤掉相似度低于阈值的文本块。
4. **排序**：对剩余的文本块进行相似度排序，返回最相关的结果。
5. **返回结果**：系统根据“前多少”的设置，返回指定数量的检索结果。
