Skip to main content
BM25,也称为 Okapi BM25,是一种用于信息检索系统的排名函数,用于估计文档与给定搜索查询的相关性。 您可以将其用作检索管道的一部分,在从另一个来源检索初始文档集后,作为后处理步骤对文档进行重新排序。

设置

BM25Retriever@langchain/community 导出。您需要这样安装它:
npm install @langchain/community @langchain/core
此检索器使用了 Okapi BM25 的此实现中的代码。

用法

您现在可以使用先前检索到的文档创建一个新的检索器:
import { BM25Retriever } from "@langchain/community/retrievers/bm25";

const retriever = BM25Retriever.fromDocuments([
  { pageContent: "Buildings are made out of brick", metadata: {} },
  { pageContent: "Buildings are made out of wood", metadata: {} },
  { pageContent: "Buildings are made out of stone", metadata: {} },
  { pageContent: "Cars are made out of metal", metadata: {} },
  { pageContent: "Cars are made out of plastic", metadata: {} },
  { pageContent: "mitochondria is the powerhouse of the cell", metadata: {} },
  { pageContent: "mitochondria is made of lipids", metadata: {} },
], { k: 4 });

// Will return the 4 documents reranked by the BM25 algorithm
await retriever.invoke("mitochondria");
[
  { pageContent: 'mitochondria is made of lipids', metadata: {} },
  {
    pageContent: 'mitochondria is the powerhouse of the cell',
    metadata: {}
  },
  { pageContent: 'Buildings are made out of brick', metadata: {} },
  { pageContent: 'Buildings are made out of wood', metadata: {} }
]