Adityav369

Joined 6 years ago

Karma
185
Submissions
28
Member since
May 5
Building a multi-modal database for AI applications and agents. I love software that is elegant, fast, simple to use.
View on Hacker News

Recent submissions

Comment · 1 year ago
You can ask the model to describe the image, but that is inherently lossy. What if it is a chart and the model gets most x, y pairs, but the user asks about a missing "x" or "y" value. Presenting the image at inference is effective since you're guaranteeing that the LLM is able to answer exactly the user's question. The only blocker here becomes how good retrieval is, and that's a smaller problem to solve. This approach allows us to only solve for passing in relevant context, the rest is taken care of by the LLM, otherwise the problem space expands to correct OCR, parsing, and getting all possible descriptions to images from the model.
Comment · 1 year ago
Yeah the fine tuning is definitely the best part.

Often, the blocker becomes high quality eval sets (which I guess always is the blocker).

Comment · 1 year ago
Mainly to maintain layout information. Also search becomes easier this way.
Comment · 1 year ago
We do use ColQwen! Currently 2, but upgrading to 2.5 soon :)
Comment · 1 year ago
Yeah we had an overload on the ingestion queue. If you try again will be much faster as we just moved to a beefier machine. (The previous ingestion will still work since it is in queue, but new ones will be faster)
Comment · 1 year ago
Depending on the use case, it happily runs on my MacBook air M2 16GB ram with mps for small pdfs, and searching over 100-150 documents with colpali takes a 2-ish minutes. Very rough numbers. For ingestion, takes around 15-20-ish seconds a page, which is on the slower end. On an A100, it takes 4-5 seconds per page for ingestion using Colpali to run (we haven't performance optimized, or optimized batch sizes yet tho). Without Colpali it is much faster. Ingestion doesn't change much as size grows.

I'd be happy to report back after some testing, we are looking to optimize more of this soon, as speed is somewhat of a missing piece at the moment.

Comment · 1 year ago
Comment · 1 year ago
You can run this fully locally using Ollama for inference, although you'll need larger models and a beefy machine for great results. On my end llama 3.2 8B does a good job on technical docs, but bigger the better lol.
Comment · 1 year ago
Thanks we should have been more clear. The part in ee is our UI, which can be used to test or in dev environments. The main code, including API, SDK, and the entire backend logic is MIT expat.
Comment · 1 year ago
Do you mean ingesting the extracted rectangles/ bounding boxes? We're actually working on bounding boxes, this is a good insight and we can add this to the product. However, the way we ingest is literally converting each page to an image then embedding that so the text, layout, diagrams are all encoded in. Would like to know what the exact use case is, can help you better
Comment · 1 year ago
Depends on your document types.

If you're using txts, then plain RAG built on top of any vector database can suffice depending on your queries (if they directly reference the text, or can be made to, then similarity search is good enough). If they are cross document, setting a high number of chunks with plain RAG to retrieve might also do a good job.

If you have tables, images, etc. then using a better extraction mechanism (maybe unstructured, or other document processors) and then creating the embeddings can also work well.

I'd say if docs are simple, then just building your own pipeline on top of a vector db is good!

Comment · 1 year ago
We have two ingestion pathways: 1. regular OCR + text embeddings; 2. Colpali. We've observed that Colpali does a much better job with tables since it can encode positional stuff and layouts as well.
Comment · 1 year ago
The paid part applies to the ui-component which provides a chat user interface. The core code, SDK, api is all under MIT license.
Comment · 1 year ago
Thanks for pointing that out! Fixed it.

For the metadata extraction, we save these as Column(JSONB) for each documents which allows it to be changed on the fly.

Although, I keep wondering if it would have been better to use something like mongodb for this part, just because it's more natural.

Please let me know if you have questions and how it works out for you.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton