Doc Search
Converse with a book (PDF)
See tweet for full demo.
Documentation: https://namuan.github.io/dr-doc-search
Source Code: https://github.com/namuan/dr-doc-search
PyPI: https://pypi.org/project/dr-doc-search/
Pre-requisites
Note: If you are using Windows, then make sure that you set the location of ImageMagick executable in the
IMCONVenvironment variable.
# For example, if you have installed ImageMagick in PROGRAMFILES\ImageMagick-7.1.0-Q16-HDRI
set IMCONV="%PROGRAMFILES%\ImageMagick-7.1.0-Q16-HDRI\magick"
Installation
pip install dr-doc-search
Example Usage
There are two steps to use this application:
1. First, you need to create the index and generate embeddings for the PDF file. Here I'm using a PDF file generated from this page Parable of a Monetary Economy
Before running this, you need to set up your OpenAI API key. You can get it from OpenAI.
From version 1.5.0, you can skip OpenAI and use HuggingFace models to generate embeddings and answers.
export OPENAI_API_KEY=<your-openai-api-key>
The run the following command to start the training process:
dr-doc-search --train -i ~/Downloads/parable-of-a-monetary-economy-heteconomist.pdf
Use huggingface for generating embeddings:
dr-doc-search --train -i ~/Downloads/parable-of-a-monetary-economy-heteconomist.pdf --embedding huggingface
The training process generates some temporary files in the OutputDir/dr-doc-search/<pdf-name> folder under your home directory.
Here is what it looks like:
~/OutputDir/dr-doc-search/parable-of-a-monetary-economy-heteconomist
$ tree
.
├── images
│ ├── output-1.png
│ ├── output-10.png
│ ├── output-11.png
...
│ └── output-9.png
├── index
│ ├── docsearch.index
│ └── index.pkl
├── parable-of-a-monetary-economy-heteconomist.pdf
└── scanned
├── output-1.txt
...
└── output-9.txt
Note: It is possible to change the base of the output directory by providing the
--app-dirargument.
2. Now that we have the index, we can use it to start asking questions.
dr-doc-search -i ~/Downloads/parable-of-a-monetary-economy-heteconomist.pdf --input-question "How did the attempt to reduce the debut resulted in decrease in employment?"
Or You can open up a web interface (on port :5006) to ask questions:
dr-doc-search --web-app -i ~/Downloads/parable-of-a-monetary-economy-heteconomist.pdf
To use huggingface model, provide the --llm argument:
dr-doc-search --web-app -i ~/Downloads/parable-of-a-monetary-economy-heteconomist.pdf --llm huggingface
There are more options for choose the start and end pages for the PDF file. See the help for more details:
dr-doc-search --help
Acknowledgements
- anton/@abacaj for the idea
- LangChain
- HoloViz Panel
- OpenAI
Development
-
Clone this repository
-
Requirements:
- Python 3.7+
- Poetry
-
Create a virtual environment and install the dependencies
poetry install
- Activate the virtual environment
poetry shell
Validating build
make build
Release process
A release is automatically published when a new version is bumped using make bump.
See .github/workflows/build.yml for more details.
Once the release is published, .github/workflows/publish.yml will automatically publish it to PyPI.
Disclaimer
This project is not affiliated with OpenAI. The OpenAI API and GPT-3 language model are not free after the trial period.
Metadata
Release files for dr-doc-search 1.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dr_doc_search-1.6.3.tar.gz | 11.6 kB | Without provenance | Details for dr_doc_search-1.6.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dr_doc_search-1.6.3-py3-none-any.whl | Python 3 | none | any | Details for dr_doc_search-1.6.3-py3-none-any.whl |
Total release size: 21.6 kB
Release files / dr_doc_search-1.6.3.tar.gz
| Download URL | dr_doc_search-1.6.3.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87ec5aac947fcc84e2eb69823740efbd17a8db4ed2bea2316169c4c679d57098
|
|
BLAKE2b-256 checksum How to use checksums |
35e4d219a9ac56ef962e39cdf20e105427db006f682ff0d36797e7058b838f04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.3.2 CPython/3.8.16 Linux/5.15.0-1033-azure
|
Release files / dr_doc_search-1.6.3-py3-none-any.whl
| Download URL | dr_doc_search-1.6.3-py3-none-any.whl |
|---|---|
| Size | 10.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9e7fc5b562dacaafeed102b458e74c41755552aa5d276f536481e99f06efff67
|
|
BLAKE2b-256 checksum How to use checksums |
cd6f7e4c1d14e2854e42e64cafff91bd8b767b25b92bee65580faf1639f81772
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.3.2 CPython/3.8.16 Linux/5.15.0-1033-azure
|
Security for dr-doc-search 1.6.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.