Git Product home page Git Product logo

grumpyp / aixplora Goto Github PK

View Code? Open in Web Editor NEW
252.0 4.0 32.0 8.56 MB

AIxplora is a open-source tool which let's you query all kind of files not limited to any length or format.

Home Page: https://aixplora.app

License: Apache License 2.0

Python 25.34% TypeScript 59.44% JavaScript 6.18% CSS 8.06% EJS 0.14% Dockerfile 0.37% Shell 0.47%
audio chat chatbot chatgpt embeddings generativeai llm llms openai pdf second-brain vectorstore embeddings-model ownfiles nlp question-answering search

aixplora's Introduction

AIxplora - Your AI powered personal file explorer


Join our Discord



🌐 AIxplora-Cloud: Share Knowledge Seamlessly 🌐

We are thrilled to introduce AIxplora-Cloud! This innovative feature enables seamless knowledge sharing, ideal for businesses, groups, or families focused on collaborative learning.

  • Cloud-Based Knowledge Sharing: Easily share insights and information with your network.
  • Anywhere Access: Reach your AIxplora brain from any location, anytime.

Learn more at AIxplora Cloud.

🧩 AIxplora Widget: Embed AI in Your Website 🧩

Meet the AIxplora Widget – your tool to integrate the AIxplora brain directly into your website. This widget offers a similar experience to the AIxplora Client, complete with personalization and your unique knowledge base.

  • Direct Website Integration: Provide AI-powered responses to user queries on your site.
  • Tailored to Your Needs: Customize the widget to seamlessly blend with your website's design.

Start with the AIxplora Widget here.


🖥️ Download AIxplora Now 🖥️

🖥 Windows version

🖥 Mac version (coming soon)


AIxplora is your innovative personal assistant, an open-source project designed for unlimited possibilities. Leveraging AI and LLMs, it understands various document types, not limited by format or length.

Imagine querying PDFs, MP3s, videos, and more with ease and proficiency. Welcome to the world of AIxplora!

🚀 Highlighted Features

  • Universal File Integration: Accepts any file type without restrictions on length.
  • Open-Source Transparency: Complete access to the source code, granting unparalleled flexibility and trust.
  • Flexible Privacy Options:
    • Use official OpenAI and ChatGPT models while ensuring data confidentiality.
    • Option to utilize open-source models for an added layer of privacy. (Everything will run on your machine, no third party API usage)
  • Innovative Summarization: Harness a unique approach to transform your files into concise summaries.
  • Interactive File Indexing: Engage in dynamic conversations with your indexed files, or detach the "AIxplora brain"-interface for a pure ChatGPT experience.

💡 Roadmap

  • AIxplora-Cloud: Share your knowledge seamlessly, perfect for businesses, friends, or families aiming for collaborative learning.
  • AIxplora Integration: Embed your AIxplora brain as a Chat-widget on your website, enabling instant AI-backed responses to user queries.
  • AIxplora Executable: Simplified usage for all; install AIxplora just like any standard application, no technical expertise needed.
  • Stay Tuned!: More exciting updates are on the horizon.

🎥 Demo video

Electron.-.AIxplora.-.your.personal.file.explorer.assistant.-.20.August.2023.mp4

more videos on YouTube:

https://youtu.be/8x9HhWjjNtY https://youtu.be/2lNNKLM0o7U https://youtu.be/eKLmhJobVvc

🛠 How to Run Locally

  1. Clone the Repository & Install Dependencies

    git clone [email protected]:grumpyp/aixplora.git
    
  2. Install Dependencies

    pip install -r backend/requirements.txt
    cd frontend && npm install
    cd ..
    
  3. Launch the Backend & Frontend

    python backend/main.py
    cd frontend
    npm start
    

🔍 Troubleshooting: Encountering frontend installation problems? Consult this debugging guide.

🐳 How to Run using Docker Compose

  1. Clone the Repository

    git clone [email protected]:grumpyp/aixplora.git
    
  2. Build Docker Image & Spin Up Containers

    install=true docker compose up --build
    
  3. Initial Build

    • Ensure the frontend/node_modules folder is absent on the first command execution.
    • The initial building process might be prolonged due to dependency installation.
  4. Post-Build Notification

    • After the build and package installation concludes, an error might appear in the console: app exited with code null, waiting for change to restart it. This is a known issue we're addressing.
  5. Access the UI

    • Visit http://localhost:1212/.
  6. Subsequent Launches

    docker compose up
    

    📝 Notes:

    • After appending new packages in requirements.txt, execute docker compose up --build.
    • Post adding fresh packages in package.json, use install=true docker compose up for new package installations.
    • To solely launch the frontend: docker compose up frontend.
    • To solely launch the backend: docker compose up backend.

🤝 How Can You Contribute?

With the recent release of a PoC for the project, your involvement is pivotal. Here's how you can be a part of our journey:

  • Code: Dive deep into our codebase! Whether it's writing, refactoring, or optimizing, every line contributes to our collective vision.

  • Documentation: Illuminate our project's essence. Assist in crafting clearer and more user-centric guidelines and explanations.

  • Testing: Become our frontline in quality assurance. Each bug identified is a stride towards unparalleled product excellence.

  • Suggest Features: Your imagination is our canvas. We deeply value ideas, irrespective of their origin.

  • Spread the Word: Amplify our message. Introduce AIxplora to your network and watch it evolve and flourish with increased collective insight.

Star history

Star History Chart

aixplora's People

Contributors

auksesir avatar dipta10 avatar doziben avatar grumpyp avatar md-abid-hussain avatar moussacodes avatar nikoraisanen avatar samahrens avatar tarun-raghunandan-miq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

aixplora's Issues

Distinguish Questions and Answers

Improve the user experience by clearly distinguishing between questions and answers in the chat interface, providing visual cues or formatting to differentiate between user queries and system responses.

frontend shared knowledge

Implement a first version of a way to connect to external knowledge.

Introduce redux for state-management to keep the external-connection in the App.

Scroll Functionality for Chat Page:

Implement scroll functionality for the chat page to allow users to easily view and navigate through previous messages in the chat history.

refactoring

As of now this is still more like a MVP.

Refactoring in every dimension is always welcomed. Feel free to open a PR!

Quota limit handling

Hitting the quota limit for the API (by uploading a file with too many tokens) for a given key throws an error. The error currently isn't handled and it presents itself an axios error on the UI.

backend shared knowledge

Implement a first draft to connect AIxplora with the AIxplora knowledge.

This can then be changed via frontend to connect to other shared knowledges.

add multiple tabs / chats

right now the chat is saved in localstorage. we want to save it in our database and work with different chat's

errorhandling OpenAI key

have seen it several times that people's API keys have rate-limits or errors,

If the error is not related to the app, we should add more verbose to it like with a toaster or something

as a user i want to use my gpt-4 api

make it able to choose between the model in the config, so I can save my key with a model reference.

introduce a global variable and change each model reference in the backend code to it

update the README

The current README is from our PoC, now we added several loaders and other features.

A brush up would be super nice!

run tests in a Github action

the first test will be added in #55

from there on we want to include more tests to cover to main functionality.

every pr should execute the test's

Can't Install

Since Node Sass always explodes when used in projects (I have a decade of experiencing this) I can't install the project.
Is it possible to use Sass or Dart-Sass instead of node-sass? Or maybe the issue lies somewhere else but from experiance its node-sass being an (s)ass. Look at their issues, like around 80% of the issues involving people not being able to install it.

npm ERR! code 1
npm ERR! path /Users/***/node_modules/frontend/node_modules/node-sass
npm ERR! command failed
npm ERR! command sh -c node scripts/build.js
npm ERR! Building: /Users/***/.nvm/versions/node/v16.16.0/bin/node /Users/***/node_modules/frontend/node_modules/node-gyp/bin/node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli   '/Users/***/.nvm/versions/node/v16.16.0/bin/node',
npm ERR! gyp verb cli   '/Users/***/node_modules/frontend/node_modules/node-gyp/bin/node-gyp.js',
npm ERR! gyp verb cli   'rebuild',
npm ERR! gyp verb cli   '--verbose',
npm ERR! gyp verb cli   '--libsass_ext=',
npm ERR! gyp verb cli   '--libsass_cflags=',
npm ERR! gyp verb cli   '--libsass_ldflags=',
npm ERR! gyp verb cli   '--libsass_library='
npm ERR! gyp verb cli ]
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | darwin | arm64
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb check python checking for Python executable "python2" in the PATH
npm ERR! gyp verb `which` succeeded python2 /Users/***/.pyenv/shims/python2
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Command failed: /Users/***/.pyenv/shims/python2 -c import sys; print "%s.%s.%s" % sys.version_info[:3];
npm ERR! gyp ERR! stack pyenv: python2: command not found
npm ERR! gyp ERR! stack
npm ERR! gyp ERR! stack The `python2' command exists in these Python versions:
npm ERR! gyp ERR! stack   2.7.18
npm ERR! gyp ERR! stack
npm ERR! gyp ERR! stack Note: See 'pyenv help global' for tips on allowing both
npm ERR! gyp ERR! stack       python2 and python3 to be found.
npm ERR! gyp ERR! stack
npm ERR! gyp ERR! stack     at ChildProcess.exithandler (node:child_process:398:12)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
npm ERR! gyp ERR! stack     at maybeClose (node:internal/child_process:1092:16)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm ERR! gyp ERR! System Darwin 22.5.0
npm ERR! gyp ERR! command "/Users/***/.nvm/versions/node/v16.16.0/bin/node" "/Users/***/node_modules/frontend/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
npm ERR! gyp ERR! cwd /Users/***/node_modules/frontend/node_modules/node-sass
npm ERR! gyp ERR! node -v v16.16.0
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/***/.npm/_logs/2023-06-12T10_13_25_623Z-debug-0.log

fix chat UI bugs

right now there's no auto-scroll, and once switching to the Chat route, it doesn't "load the last message"

we also decided to not implement graph in this issue, so delete this

add epub_loader

A ´.epub` loader would be a great features to load in ebooks.

Cannot run frontend

npm start from a clean install on WSL:

TypeError
Cannot read properties of undefined (reading 'ipcRenderer')
Call Stack
 ./src/renderer/index.tsx
  renderer.dev.js:66999:17
 options.factory
  renderer.dev.js:78064:31
webpack_require
  renderer.dev.js:77510:33
 undefined
  renderer.dev.js:78649:37
 undefined
  renderer.dev.js:78652:12
 webpackUniversalModuleDefinition
  renderer.dev.js:7:11
 undefined
  renderer.dev.js:10:3

add a video loader

we want to query videos.

follow up ticket:

chat should return timestamps once it's relation in the vectors found the metadata "video", so people know where to watch

Preserve Chat Content when Changing Pages

Ensure that when users navigate to different pages within the application, the content of the chat remains intact so that users can seamlessly switch between pages without losing their chat conversation.

Make it optional to give intruction to LLM

Right now we want the LLM to answer our question based on context. But what if we want it to write a Text based on the context, or a song?

Would be a great feature to make this optional to give additional input (prompt)

Support async indexing

for larger files or audio it takes a while to index, a async way would be nice

EDIT: It's async already, but no visual on that. could be confusing if the Chat wouldn't work.

Tests API + DB

We need tests for the API and the database

feel free to work on it!

add a csv / xlsx loader

Currently we're not supporting .csv nor .xlsx

Good way to start getting into this project, feel free to work on it!

render formulas in chat

As a scientific user I want math formulas to be rendered. E.g.

The formula provided is for calculating the probability of an attacker catching up from a given deficit in a blockchain system, based on the Gambler's Ruin problem. The attacker's potential progress is assumed to follow a Poisson distribution, with an expected value of \ue0c1=zq p, where q is the probability an honest node finds the next block, p is the probability the attacker finds the next block, and z is the number of blocks behind the honest chain the attacker currently is.

To calculate the probability that the attacker could catch up now, the Poisson density for each amount of progress the attacker could have made is multiplied by the probability he could catch up from that point. This is then rearranged to avoid summing the infinite tail of the distribution.

The provided C code converts this formula into code and can be used to calculate the probability for various values of q and z. The probability drops exponentially with z, and the formula assumes p > q.

Overall, this formula and code are used to assess the security of a blockchain system and evaluate the likelihood of an attacker catching up with the honest chain.

add a progress bar for longer tasks

some tasks take time to run, like uploading a file, or waiting for an answer, implement a progress bar or a loader, while the user wait for the task to end

Feature to remove uploaded files

Is there a feature to remove files uploaded from the DB?
Right now, once I encounter a rate-limit error once, I'm unable to remove the file from the Files section

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.