LlamaIndex is a data framework for building RAG (Retrieval-Augmented Generation) applications. The TypeScript version lets you connect LLMs to your data — documents, APIs, databases — with minimal code.
Installation
npm install llamaindex
Simple Document QA
import { Document, VectorStoreIndex, Settings } from "llamaindex";
import { OpenAI, OpenAIEmbedding } from "@llamaindex/openai";
Settings.llm = new OpenAI({ model: "gpt-4o-mini" });
Settings.embedModel = new OpenAIEmbedding();
// Create index from documents
const document = new Document({
text: "LlamaIndex helps you build RAG apps. It supports multiple LLM providers and vector stores."
});
const index = await VectorStoreIndex.fromDocuments([document]);
// Query the index
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query({ query: "What does LlamaIndex do?" });
console.log(response.toString());
Loading Documents from Files
import { SimpleDirectoryReader } from "llamaindex";
const documents = await new SimpleDirectoryReader().loadData("./data");
const index = await VectorStoreIndex.fromDocuments(documents);
const engine = index.asQueryEngine();
const answer = await engine.query({ query: "Summarize the key findings" });
Chat Engine with Memory
const chatEngine = index.asChatEngine();
const response1 = await chatEngine.chat({ message: "What is web scraping?" });
console.log(response1.toString());
// Follow-up with context
const response2 = await chatEngine.chat({ message: "What tools are commonly used?" });
console.log(response2.toString());
Streaming
const stream = await queryEngine.query({
query: "Explain RAG architecture",
stream: true
});
for await (const chunk of stream) {
process.stdout.write(chunk.toString());
}
Custom Retriever
import { VectorStoreIndex, MetadataFilters } from "llamaindex";
const retriever = index.asRetriever({
similarityTopK: 5,
filters: new MetadataFilters({
filters: [{ key: "category", value: "technical" }]
})
});
const nodes = await retriever.retrieve({ query: "API best practices" });
nodes.forEach(n => console.log(n.node.getText().slice(0, 100)));
Need to extract or automate web content at scale? Check out my web scraping tools on Apify — no coding required. Or email me at spinov001@gmail.com for custom solutions.
Top comments (0)