npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

rag-doc-analyzer

v0.1.0

Published

A RAG (Retrieval-Augmented Generation) library for document analysis and processing

Downloads

10

Readme

RAG Document Analyzer

A powerful TypeScript library for document analysis and processing using Retrieval-Augmented Generation (RAG) techniques. This library provides tools for document loading, text extraction, embedding generation, and semantic search.

Features

  • 📄 Document loading and processing (PDF support included)
  • 🔍 Semantic search capabilities
  • 🤖 Integration with various LLM providers (OpenAI, Ollama, Gemini)
  • 🧠 In-memory vector storage
  • 🚀 Built with TypeScript for type safety

Installation

npm install rag-doc-analyzer
# or
yarn add rag-doc-analyzer

Prerequisites

  • Node.js >= 16.0.0
  • API keys for your chosen LLM provider (OpenAI, Ollama, or Gemini)

Quick Start

import { DocAnalyzer } from 'rag-doc-analyzer';
import { readFileSync } from 'fs';
import { join } from 'path';

async function main() {
  try {
    // Initialize the analyzer
    const analyzer = await DocAnalyzer.init({
      pdfs: [readFileSync(join(process.cwd(), 'path-to-your-document.pdf'))],
      llm: {
        provider: 'openai', // or 'ollama' or 'gemini'
        apiKey: 'your-api-key-here',
        model: 'gpt-3.5-turbo' // or your preferred model
      },
      embedder: 'openai' // or 'ollama'
    });

    // Ask a question about the document
    const answer = await analyzer.ask('What is the main topic of this document?');
    console.log('Answer:', answer);

    // Or have a conversation
    const messages = [
      { role: 'user' as const, content: 'What are the key points?' },
      // The response will be added to the messages array
    ];
    
    const response = await analyzer.chat(messages);
    console.log('Chat response:', response);
  } catch (error) {
    console.error('Error:', error);
  }
}

main();

Configuration Options

interface RagOptions {
  // Array of PDF documents (as Buffer, File, or file path string)
  pdfs: (Buffer | File | string)[];
  
  // LLM configuration
  llm: {
    // The LLM provider to use
    provider: 'openai' | 'ollama' | 'gemini';
    
    // API key for the provider (optional for some providers like Ollama)
    apiKey?: string;
    
    // Model to use (e.g., 'gpt-3.5-turbo', 'llama2', 'gemini-pro')
    model: string;
  };
  
  // Embedding model to use (optional, defaults to 'openai')
  embedder?: 'openai' | 'ollama';
  
  // Vector store to use (currently only 'memory' is supported)
  vectorStore?: 'memory';
}

API Reference

DocAnalyzer.init(options: RagOptions): Promise<DocAnalyzer>

Initialize a new DocAnalyzer instance with the provided options.

analyzer.ask(question: string): Promise<string>

Ask a question about the loaded documents.

analyzer.chat(messages: Message[]): Promise<string>

Have a conversation about the loaded documents.

License

MIT

For detailed documentation and API reference, please visit our documentation website.

Contributing

Contributions are welcome! Please read our contributing guidelines to get started.

License

This project is licensed under the MIT License - see the LICENSE file for details.