Я работаю над конвейером 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
Как получить ограничительные коробки (Bbox) для кусков в тряпичном трубопроводе, чтобы выделить 5 лучших кусков в докуме ⇐ Python
Программы на Python
1737730403
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")
Подробнее здесь: [url]https://stackoverflow.com/questions/79384741/how-to-get-bounding-boxes-bbox-for-chunks-in-a-rag-pipeline-to-highlight-top-5[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия