From 8a4330132ccc7079294e9a812fea691edf11b623 Mon Sep 17 00:00:00 2001
From: Yi Ding <yi.s.ding@gmail.com>
Date: Mon, 31 Jul 2023 22:49:48 -0700
Subject: [PATCH] try replacing CONTRIBUTING and README with symlinks

Avoid duplication
---
 CONTRIBUTING.md |  81 +--------------------------------------
 README.md       | 100 +-----------------------------------------------
 2 files changed, 2 insertions(+), 179 deletions(-)
 mode change 100644 => 120000 CONTRIBUTING.md
 mode change 100644 => 120000 README.md

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 0ea2b309f..000000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# Contributing
-
-## Structure
-
-This is a monorepo built with Turborepo
-
-Right now there are two packages of importance:
-
-packages/core which is the main NPM library llamaindex
-
-apps/simple is where the demo code lives
-
-### Turborepo docs
-
-You can checkout how Turborepo works using the default [README-turborepo.md](/README-turborepo.md)
-
-## Getting Started
-
-Install NodeJS. Preferably v18 using nvm or n.
-
-Inside the LlamaIndexTS directory:
-
-```
-npm i -g pnpm ts-node
-pnpm install
-```
-
-Note: we use pnpm in this repo, which has a lot of the same functionality and CLI options as npm but it does do some things better in a monorepo, like centralizing dependencies and caching.
-
-PNPM's has documentation on its [workspace feature](https://pnpm.io/workspaces) and Turborepo had some [useful documentation also](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks).
-
-### Running Typescript
-
-When we publish to NPM we will have a tsc compiled version of the library in JS. For now, the easiest thing to do is use ts-node.
-
-### Test cases
-
-To run them, run
-
-```
-pnpm run test
-```
-
-To write new test cases write them in [packages/core/src/tests](/packages/core/src/tests)
-
-We use Jest https://jestjs.io/ to write our test cases. Jest comes with a bunch of built in assertions using the expect function: https://jestjs.io/docs/expect
-
-### Demo applications
-
-There is an existing ["simple"](/apps/simple/README.md) demos folder with mainly NodeJS scripts. Feel free to add additional demos to that folder. If you would like to try out your changes in the core package with a new demo, you need to run the build command in the README.
-
-You can create new demo applications in the apps folder. Just run pnpm init in the folder after you create it to create its own package.json
-
-### Installing packages
-
-To install packages for a specific package or demo application, run
-
-```
-pnpm add [NPM Package] --filter [package or application i.e. core or simple]
-```
-
-To install packages for every package or application run
-
-```
-pnpm add -w [NPM Package]
-```
-
-### Docs
-
-To contribute to the docs, go to the docs website folder and run the Docusaurus instance.
-
-```bash
-cd apps/docs
-pnpm install
-pnpm start
-```
-
-That should start a webserver which will serve the docs on https://localhost:3000
-
-Any changes you make should be reflected in the browser. If you need to regenerate the API docs and find that your TSDoc isn't getting the updates, feel free to remove apps/docs/api. It will automatically regenerate itself when you run pnpm start again.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 120000
index 000000000..8fabf57ef
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1 @@
+packages/core/CONTRIBUTING.md
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index d9f0eeb7f..000000000
--- a/README.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# LlamaIndex.TS
-
-LlamaIndex is a data framework for your LLM application.
-
-Use your own data with large language models (LLMs, OpenAI ChatGPT and others) in Typescript and Javascript.
-
-Documentation: https://ts.llamaindex.ai/
-
-## What is LlamaIndex.TS?
-
-LlamaIndex.TS aims to be a lightweight, easy to use set of libraries to help you integrate large language models into your applications with your own data.
-
-## Getting started with an example:
-
-LlamaIndex.TS requries Node v18 or higher. You can download it from https://nodejs.org or use https://nvm.sh (our preferred option).
-
-In a new folder:
-
-```bash
-export OPENAI_API_KEY="sk-......" # Replace with your key from https://platform.openai.com/account/api-keys
-pnpm init
-pnpm install typescript
-pnpm exec tsc –-init # if needed
-pnpm install llamaindex
-pnpm install @types/node
-```
-
-Create the file example.ts
-
-```ts
-// example.ts
-import fs from "fs/promises";
-import { Document, VectorStoreIndex } from "llamaindex";
-
-async function main() {
-  // Load essay from abramov.txt in Node
-  const essay = await fs.readFile(
-    "node_modules/llamaindex/examples/abramov.txt",
-    "utf-8"
-  );
-
-  // Create Document object with essay
-  const document = new Document({ text: essay });
-
-  // Split text and create embeddings. Store them in a VectorStoreIndex
-  const index = await VectorStoreIndex.fromDocuments([document]);
-
-  // Query the index
-  const queryEngine = index.asQueryEngine();
-  const response = await queryEngine.query(
-    "What did the author do in college?"
-  );
-
-  // Output response
-  console.log(response.toString());
-}
-
-main();
-```
-
-Then you can run it using
-
-```bash
-pnpm dlx ts-node example.ts
-```
-
-## Playground
-
-Check out our NextJS playground at https://llama-playground.vercel.app/. The source is available at https://github.com/run-llama/ts-playground
-
-## Core concepts for getting started:
-
-- [Document](/packages/core/src/Node.ts): A document represents a text file, PDF file or other contiguous piece of data.
-
-- [Node](/packages/core/src/Node.ts): The basic data building block. Most commonly, these are parts of the document split into manageable pieces that are small enough to be fed into an embedding model and LLM.
-
-- [Embedding](/packages/core/src/Embedding.ts): Embeddings are sets of floating point numbers which represent the data in a Node. By comparing the similarity of embeddings, we can derive an understanding of the similarity of two pieces of data. One use case is to compare the embedding of a question with the embeddings of our Nodes to see which Nodes may contain the data needed to answer that quesiton.
-
-- [Indices](/packages/core/src/indices/): Indices store the Nodes and the embeddings of those nodes. QueryEngines retrieve Nodes from these Indices using embedding similarity.
-
-- [QueryEngine](/packages/core/src/QueryEngine.ts): Query engines are what generate the query you put in and give you back the result. Query engines generally combine a pre-built prompt with selected Nodes from your Index to give the LLM the context it needs to answer your query.
-
-- [ChatEngine](/packages/core/src/ChatEngine.ts): A ChatEngine helps you build a chatbot that will interact with your Indices.
-
-- [SimplePrompt](/packages/core/src/Prompt.ts): A simple standardized function call definition that takes in inputs and formats them in a template literal. SimplePrompts can be specialized using currying and combined using other SimplePrompt functions.
-
-## Supported LLMs:
-
-- OpenAI GPT-3.5-turbo and GPT-4
-- Anthropic Claude Instant and Claude 2
-- Llama2 Chat LLMs (70B, 13B, and 7B parameters)
-
-## Contributing:
-
-We are in the very early days of LlamaIndex.TS. If you’re interested in hacking on it with us check out our [contributing guide](/CONTRIBUTING.md)
-
-## Bugs? Questions?
-
-Please join our Discord! https://discord.com/invite/eN6D2HQ4aX
diff --git a/README.md b/README.md
new file mode 120000
index 000000000..dfd012e09
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+packages/core/README.md
\ No newline at end of file
-- 
GitLab