Как получить ограничительные коробки (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="some
model")
)
indexing_pipeline.add_component(
"dense_doc_embedder",
SentenceTransformersDocumentEmbedder(
model="some model"
),
)
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»