Skip to main content

A simple command-line utility for synchronizing documents to vector storage for LLM interaction.

Project description

vecsync

GitHub PyPI image image Actions status

A simple command-line utility for synchronizing documents to vector storage for LLM interaction. Vecsync helps you quickly chat with papers, journals, and other documents with minimal overhead.

  • 📄 Upload a local collection of PDFs to a remote vector store
  • ✅ Automatically add and remove remote files to match local documents
  • ☺️ Simplify platform specific complexities
  • 👀 Synchronize with a Zotero collection
  • 💬 Chat with documents from command line or local Gradio UI

demo

Local Gradio instance available for assistant interaction. Chat history across sessions is saved. chat

Getting Started

OpenAI API Requirements

Currently vecsync only supports OpenAI for remote operations and requires a valid OpenAI key with credits. Visit https://openai.com/api/ for more information. Future improvements will allow more platform options and self-hosted models.

Installation

Install vecsync from PyPI.

pip install vecsync

Set your OpenAI API key environment.

export OPENAI_API_KEY=...

You can also define the key via .env file using dotenv

echo "OPENAI_API_KEY=…" > .env

Development

This project is still in early alpha, and users should frequent updates. Breaking changes will be avoided where possible. To use the latest code, clone the repository and install locally. In progress work uses the branch naming convention of dev-0.0.1 and will have an accompanying open PR.

git clone -b dev-0.0.1 git@github.com:jbencina/vecsync.git
cd vecsync
uv sync && source .venv/bin/activate

Usage

Synching Collections

Use the vs sync command for all synching operations.

Sync from local file path.

cd path/to/pdfs && vs sync

Synching 2 files from local to OpenAI
Uploading 2 files to OpenAI file storage
Attaching 2 files to OpenAI vector store

🏁 Sync results:
Saved: 2 | Deleted: 0 | Skipped: 0 
Remote count: 2
Duration: 8.93 seconds

Sync from a Zotero collection. Interactive selections are remembered for future sessions.

vs sync -source zotero

Enter the path to your Zotero directory (Default: /Users/jbencina/Zotero): 

Available collections:
[1]: My research
Enter the collection ID to sync (Default: 1): 

Synching 15 files from local to OpenAI
Uploading 15 files to OpenAI file storage
Attaching 15 files to OpenAI vector store

🏁 Sync results:
Saved: 15 | Deleted: 0 | Skipped: 0 
Remote count: 15
Duration: 57.99 seconds

Settings

Settings are persisted in a local json file which can be purged.

vs settings clear

Chat Interactions

Use vs chat to chat with uploaded documents via the command line. The responding assistant is automatically linked to your vector store. Alternatively, you can use vs chat -u to spawn a local Gradio instance.

vs chat
✅ Assistant found: asst_123456789
Type "exit" to quit at any time.

> Give a one sentence summary of your vector store collection contents.
💬 Conversation started: thread_123456789

The contents of the vector store collection primarily focus on machine learning techniques for causal effect inference,particularly through adversarial representation learning methods that address challenges in treatment selection bias and information loss in observational data

Conversations are remembered across sessions.

vs chat    Assistant found: asst_123456789
✅ Thread found: thread_123456789
Type "exit" to quit at any time.

> What was my last question to you? 
Your last question to me was asking for a one sentence summary of the contents of my vector store collection.

Threads can be cleared using the -n flag.

vs chat -n
✅ Assistant found: asst_123456789
Type "exit" to quit at any time.

> What was my last question to you?
💬 Conversation started: thread_987654321

Your last question was about searching for relevant information from a large number of journals and papers, emphasizing the importance of citing information from the provided sources without making up any content.

# Assistant response is in reference to the system prompt

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vecsync-0.6.0.tar.gz (917.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vecsync-0.6.0-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file vecsync-0.6.0.tar.gz.

File metadata

  • Download URL: vecsync-0.6.0.tar.gz
  • Upload date:
  • Size: 917.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.5

File hashes

Hashes for vecsync-0.6.0.tar.gz
Algorithm Hash digest
SHA256 40399d73a297a19fe8b41bfa1952b5919ad1342c6eaae23a158931cd41e4928d
MD5 069051d6b78b1f0f83ca6eb711e472d8
BLAKE2b-256 442e980455d4fda87b9788ffbbfb5a2486436236b30abf091354fc0ae48f2c61

See more details on using hashes here.

File details

Details for the file vecsync-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: vecsync-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 44.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.5

File hashes

Hashes for vecsync-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bdd978eb13ac60e729cbb759c08edb93f7ba3026e8190747b0bce25c8e41c7f0
MD5 90dda9a9ff8b1ead9d7a44e0e3d473fd
BLAKE2b-256 ecf398d675f8792f773231c6218d1fdcf5571d83f67c97e3b626dcd43b984785

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page