Farspeak is an API that simplifies creating RAG apps. By leveraging vector databases and LLMs, Farspeak lets developers build powerful, AI-driven apps quickly, processing structured/unstructured data via CRUD operations.
When we first started creating RAG-powered apps, we quickly noticed a common pattern across all of them. These apps don't need to be complex and should enable developers with zero ML experience. Additionally, they shouldn't be limited to Python. Developers using different languages should be supported as well.
That's why we created Farspeak as an API first, then built packages around it to support diverse developer communities. We started with NPM to support fellow JS developers.
Our goal is to provide a near-instant developer experience, enabling modern app functionalities such as processing structured (JSON) and unstructured (e.g., PDF) data, and facilitating "talk to your data" features.
Farspeak's API is RESTful and utilizes CRUD operations to store and process entities. Entities are regular JSON objects, like "todos". For instance, to store a JSON object, you can either use the POST method on "/apps/my-app/dev/todos" or, with NPM, use the "write" method: farspeak.entity("todos").write({...}).
Once you wrote any data you can ask questions using natural language with ".inquire" method, like so:
farspeak
.entity("todos")
.inquire("What is my most important todo?");
Processing documents is similar to handling structured JSON data, except you use ".fromDocument" instead of ".write". This is where prompt engineering comes in—describing what you need to store and "RAG". To describe your data, along with the file path, you send "instructions" and a "template".
Instructions help Farspeak understand the document better instead of guessing, such as "This is an ID document". Templates are useful for defining the properties of the entity. For example, for an ID document with "full_name" and "address" properties, you would define the template as:
{
"full_name": "This is the full name of the person",
"address": "This is the address of the person including country code"
}
A full example:
farspeak.entity("id_docs").fromDocument({ filePath, instructions, template });
farspeak.entity("id_docs").inquire("Where does Jane Doe live?");
We would love to hear your first impressions of the product and suggestions on what we could build next.
Important links:
Farspeak dashboard: https://dashboard.farspeak.ai
Our NPM repo: https://github.com/farspeak/fars...
Next.js example: https://github.com/farspeak/next...
Intuitive and simple to use. Our team found it very useful for one ongoing project. Something to think about for future releases: editing parsed data can be very useful since processing different kind of unstructured data can often result in errors.
nodb
Farspeak
Farspeak