|
224 | 224 | "embedding_retriever = InMemoryEmbeddingRetriever(document_store)\n", |
225 | 225 | "bm25_retriever = InMemoryBM25Retriever(document_store)" |
226 | 226 | ] |
227 | | - }, |
228 | | - { |
229 | | - "cell_type": "markdown", |
230 | | - "metadata": { |
231 | | - "id": "FC81c8RBrRFf" |
232 | | - }, |
233 | | - "source": [ |
234 | | - "### 2) Join Retrieval Results\n", |
235 | | - "\n", |
236 | | - "Haystack offers several joining methods in [`DocumentJoiner`](https://docs.haystack.deepset.ai/docs/documentjoiner) to be used for different use cases such as `merge` and `reciprocal_rank_fusion`. In this example, you will use the default `concatenate` mode to join the documents coming from two Retrievers as the [Ranker](https://docs.haystack.deepset.ai/docs/rankers) will be the main component to rank the documents for relevancy." |
237 | | - ] |
238 | | - }, |
239 | | - { |
240 | | - "cell_type": "code", |
241 | | - "execution_count": 8, |
242 | | - "metadata": { |
243 | | - "id": "GYso6_8BrhY8" |
244 | | - }, |
245 | | - "outputs": [], |
246 | | - "source": [ |
247 | | - "from haystack.components.joiners import DocumentJoiner\n", |
248 | | - "\n", |
249 | | - "document_joiner = DocumentJoiner()" |
250 | | - ] |
251 | | - }, |
| 227 | + }, |
252 | 228 | { |
253 | 229 | "cell_type": "markdown", |
254 | 230 | "metadata": { |
255 | 231 | "id": "r8_jHzmosbC_" |
256 | 232 | }, |
257 | 233 | "source": [ |
258 | | - "### 3) Rank the Results\n", |
| 234 | + "### 2) Rank the Results\n", |
259 | 235 | "\n", |
260 | 236 | "Use the [TransformersSimilarityRanker](https://docs.haystack.deepset.ai/docs/transformerssimilarityranker) that scores the relevancy of all retrieved documents for the given search query by using a cross encoder model. In this example, you will use [BAAI/bge-reranker-base](https://huggingface.co/BAAI/bge-reranker-base) model to rank the retrieved documents but you can replace this model with other cross-encoder models on Hugging Face." |
261 | 237 | ] |
|
279 | 255 | "id": "Y5jzzvUIstQ4" |
280 | 256 | }, |
281 | 257 | "source": [ |
282 | | - "### 4) Create the Hybrid Retrieval Pipeline\n", |
| 258 | + "### 3) Create the Hybrid Retrieval Pipeline\n", |
283 | 259 | "\n", |
284 | | - "Add all initialized components to your pipeline and connect them." |
| 260 | + "Add all initialized components to your pipeline. Both the BM25 and Embedding retrievers are connected to the same ranker input." |
285 | 261 | ] |
286 | 262 | }, |
287 | 263 | { |
|
298 | 274 | "hybrid_retrieval.add_component(\"text_embedder\", text_embedder)\n", |
299 | 275 | "hybrid_retrieval.add_component(\"embedding_retriever\", embedding_retriever)\n", |
300 | 276 | "hybrid_retrieval.add_component(\"bm25_retriever\", bm25_retriever)\n", |
301 | | - "hybrid_retrieval.add_component(\"document_joiner\", document_joiner)\n", |
302 | 277 | "hybrid_retrieval.add_component(\"ranker\", ranker)\n", |
303 | 278 | "\n", |
304 | 279 | "hybrid_retrieval.connect(\"text_embedder\", \"embedding_retriever\")\n", |
305 | | - "hybrid_retrieval.connect(\"bm25_retriever\", \"document_joiner\")\n", |
306 | | - "hybrid_retrieval.connect(\"embedding_retriever\", \"document_joiner\")\n", |
307 | | - "hybrid_retrieval.connect(\"document_joiner\", \"ranker\")" |
| 280 | + "hybrid_retrieval.connect(\"bm25_retriever\", \"ranker\")\n", |
| 281 | + "hybrid_retrieval.connect(\"embedding_retriever\", \"ranker\")" |
308 | 282 | ] |
309 | 283 | }, |
310 | 284 | { |
|
0 commit comments