Welcome to the Inquisitor, an AI-powered application designed to enhance academic research workflows. This tool enables users to manage, search, and analyze research papers using advanced AI models and vector search technologies. Below is a comprehensive guide to set up, configure, and use the application.
- User and Paper Management: RESTful APIs to manage users and papers.
- PDF Parsing: Extract text from PDF files and save them to a database.
- Semantic Search: Search for research papers using natural language queries.
- Text Summarization: Summarize research papers for quick insights.
- Customizable Storage: Support for in-memory or Pinecone-based vector storage.
- Agents for Enhanced Functionality:
- SummarizerAgent: Provides concise summaries of academic papers.
- ResearchAgent: Performs semantic search and retrieval of relevant papers.
- LitReviewAgent: Facilitates comprehensive literature reviews by recommending local and external papers based on user-provided topics or existing papers.
- Python 3.8+
- MySQL or compatible database
- pip
- Clone the repository:
git clone https://github.com/Helixan/AI-Academic-Research-Assistant.git cd ai-academic-research-assistant
- Set up a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Configure the database and API keys (see Configuration).
- Run the application:
uvicorn src.main:app --reload
Define environment variables and configurations in config/config.yaml
.
environment: development
openai_api_key: YOUR_KEY
database:
url: YOUR_DB_URL
test_database:
url: YOUR_TEST_DB_URL
vector_store:
type: pinecone
api_key: YOUR_PINECONE_KEY
environment: "us-east-1"
index_name: "my-index"
Logging is configured via config/logging.yaml
:
version: 1
formatters:
simple:
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
handlers:
console:
class: logging.StreamHandler
formatter: simple
level: DEBUG
stream: ext://sys.stdout
root:
level: DEBUG
handlers: [console]
Run the application and navigate to http://127.0.0.1:8000/docs
to explore the API documentation.
- GET /users: Retrieve all users.
- POST /users: Create a new user.
- GET /papers: Retrieve all papers.
- POST /papers: Upload a paper.
- GET /papers/search: Search for papers.
- POST /papers/summarize/{id}: Summarize a specific paper.
- POST /papers/literature_review/local: Perform a local literature review by recommending top locally stored papers relevant to a user's topic.
- POST /papers/literature_review/external: Perform an external literature review by fetching references from external sources (e.g., Arxiv) related to a user's topic.
- POST /papers/literature_review/full: Perform a comprehensive literature review by combining both local and external paper recommendations.
Upload PDFs using the /papers
endpoint. Extracted content is stored in the database, and embeddings are generated for semantic search.
This project is licensed under the Attribution-NonCommercial-ShareAlike 4.0 International license. See the LICENSE file for details.