Как получить ограничительные коробки (Bbox) для кусков в тряпичном трубопроводе, чтобы выделить 5 лучших кусков в докумеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как получить ограничительные коробки (Bbox) для кусков в тряпичном трубопроводе, чтобы выделить 5 лучших кусков в докуме

Сообщение Anonymous »

Я работаю над конвейером RAG (генерация с расширенным поиском), где сначала предварительно обрабатываю PDF-документ и разбиваю его на фрагменты. При запуске процесса RAG я извлекаю 5 верхних фрагментов и генерирую ответ. Чтобы обеспечить контекст, я хочу выделить эти 5 фрагментов в исходном PDF-документе.
Я использую библиотеку pdf.js во внешнем интерфейсе, которая технически может выделять текст, но я Я столкнулся с двумя проблемами:
Как соединить ограничивающие рамки с частями после разделения PDF-файла?
Как справиться с ситуациями, когда ограничивающие рамки перекрываются на страницах?
Для контекста я использую Haystack AI и Python для конвейера RAG. Любая информация о том, как извлечь ограничивающие рамки для этих фрагментов, будет очень полезна!
Мой код предварительной обработки
import json
import os
from pathlib import Path

from haystack import Pipeline
from haystack.components.converters import PyPDFToDocument
from haystack.components.embedders import SentenceTransformersDocumentEmbedder
from haystack.components.preprocessors import (
DocumentCleaner,
NLTKDocumentSplitter,
)
from haystack.components.writers import DocumentWriter
from haystack.document_stores.types import DuplicatePolicy
from haystack_integrations.components.embedders.fastembed import (
FastembedSparseDocumentEmbedder,
)
from haystack_integrations.document_stores.qdrant import QdrantDocumentStore
from utils.process_dataset import load_pdfs_config

document_store = QdrantDocumentStore(
":memory:",
use_sparse_embeddings=True,
recreate_index=True,
embedding_dim=1024, # based on the embedding model
return_embedding=False,
wait_result_from_api=True,
)

indexing_pipeline = Pipeline()
indexing_pipeline.add_component("converter", PyPDFToDocument())
indexing_pipeline.add_component("cleaner", DocumentCleaner())
indexing_pipeline.add_component(
"splitter",
NLTKDocumentSplitter(
split_by="word",
respect_sentence_boundary=False,
split_length=200,
split_overlap=40,
),
)

indexing_pipeline.add_component(
"sparse_doc_embedder", FastembedSparseDocumentEmbedder(model="Qdrant/bm25")
)
indexing_pipeline.add_component(
"dense_doc_embedder",
SentenceTransformersDocumentEmbedder(
model="intfloat/multilingual-e5-large-instruct"
),
)
indexing_pipeline.add_component(
"writer",
DocumentWriter(document_store=document_store, policy=DuplicatePolicy.OVERWRITE),
)

indexing_pipeline.connect("converter", "splitter")

indexing_pipeline.connect("splitter", "sparse_doc_embedder")
indexing_pipeline.connect("sparse_doc_embedder", "dense_doc_embedder")
indexing_pipeline.connect("dense_doc_embedder", "writer")



Подробнее здесь: https://stackoverflow.com/questions/793 ... ight-top-5
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»