在混合搜索中，为什么需要创建一个名为 `retriever` 的类？	为了将语义搜索（Vector Index）和词汇搜索（BM25 Index）等不同功能封装在一起，形成一个统一的搜索流程。
不同的搜索方法（如 Vector Index 和 BM25 Index）在被 `retriever` 封装时，必须满足什么条件？	它们必须拥有几乎完全相同的公共 API（Public API），例如 `add document` 和 `search` 方法。
用于结合来自不同搜索方法结果的特定技术是什么？	称为“倒数排名融合”（Reciprocal Rank Fusion, RRF）的技术。
倒数排名融合（RRF）的主要作用是什么？	它提供了一种机制，用于合并和重新排序来自多个搜索算法的排名结果。
在 RRF 过程中，如何为每个文本块计算最终得分？	通过一个公式，将该文本块在每个索引中的排名（Rank）转化为分数，然后求和或进行加权计算。
在应用 RRF 公式计算出分数后，下一步需要做什么？	根据计算出的分数，将所有搜索结果从高分到低分进行排序。
确保所有搜索索引都具有相同 API 的主要优势是什么？	使得新的搜索功能可以很容易地被添加（Extensibility），只需实现相同的 API 即可被 `retriever` 自动集成。
`retriever` 类在处理文档时，主要执行哪些操作？	接收用户传入的文档，并将其传递给内部包含的各个索引进行处理。
