Compare commits

...

56 Commits

Author SHA1 Message Date
github-actions[bot] 3ae832ca28 Release 0.5.0 (#1024)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: himself65 <himself65@users.noreply.github.com>
2024-07-08 17:16:46 -07:00
Alex Yang 16ef5dd631 feat: simplify callback manager (#1027) 2024-07-08 16:44:54 -07:00
Alex Yang c4bd0a5215 refactor: move llm & callback manager to core module (#1026) 2024-07-08 15:48:59 -07:00
Alex Yang f5c8ca7dfb chore: use bunchee bundler for all (#1025) 2024-07-08 09:45:55 -07:00
Sacha Bron 36ddec44af fix: typo in custom page separator parameter for LlamaParse (#1023) 2024-07-08 09:27:51 -07:00
github-actions[bot] c147d8a271 Release 0.4.14 (#1021)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-05 15:26:31 -07:00
Alex Yang 1c444d58b6 feat(cloud): update openapi.json (#1020) 2024-07-05 15:01:22 -07:00
github-actions[bot] 1f910f7566 Release 0.4.13 (#1016)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-05 11:44:37 -07:00
Thuc Pham 99826cff43 fix: missing dispatch retrieve event on llamacloud retriever (#1018) 2024-07-05 20:43:26 +07:00
Fabian Wimmer e8f8bea969 feat: add boundingBox and targetPages to LlamaParseReader (#1017) 2024-07-05 14:32:26 +07:00
Fabian Wimmer 304484b77a feat: add ignoreErrors flag to LlamaParse (#959)
Co-authored-by: Marcus Schiesser <marcus.schiesser@googlemail.com>
2024-07-04 20:51:05 +07:00
abgita 29fed77d58 Fixed a typo in the retriever description (#1009) 2024-07-04 20:15:20 +07:00
Alex Yang db070588c8 ci: fix setup pnpm (#1014) 2024-07-03 12:11:48 -07:00
github-actions[bot] 76deca7fea Release 0.4.12 (#1013)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-03 10:24:22 -07:00
Alex Yang f326ab86d2 chore: bump version 2024-07-03 10:20:46 -07:00
Cássio de Freitas e Silva ca8d9709e0 feat: add support for Meta LLMs in AWS Bedrock (#960) 2024-07-03 01:27:58 -07:00
github-actions[bot] e0af059221 Release 0.4.11 (#1008)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-02 15:07:03 -07:00
Alex Yang 8bf5b4acfd fix: llama parse input spreadsheet (#1007) 2024-07-02 14:48:51 -07:00
Alex Yang 93a003baa0 ci: pre release (#1005) 2024-07-02 00:40:45 -07:00
github-actions[bot] 5d9b0bd3f0 Release 0.4.10 (#1003)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-01 23:59:52 -07:00
Alex Yang 9a5525e1b3 refactor(core): migrate llms type (#1002) 2024-07-01 20:13:35 -07:00
Peron 7dce3d28d3 fix: disable External Filters for Gemini (#994)
Co-authored-by: Alex Yang <himself65@outlook.com>
2024-07-01 18:28:22 -07:00
github-actions[bot] d4c1482c1c Release 0.4.9 (#1001)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-01 17:20:47 -07:00
Alex Yang 3a96a483a6 fix: anthropic image input (#999) 2024-07-01 16:03:30 -07:00
Alex Yang 7467fce2d4 docs: remove cloudflare worker section (#1000) 2024-07-01 16:01:55 -07:00
github-actions[bot] 06af08cac4 Release 0.4.8 (#998)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-07-01 15:07:50 -07:00
Alex Yang 83ebdfb1c5 fix: next.js binding (#997) 2024-07-01 14:52:57 -07:00
github-actions[bot] 835b1ac000 Release 0.4.7 (#986)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-28 22:58:14 -07:00
Alex Yang f10b41dbc1 chore: fix release files (#991) 2024-06-28 13:36:55 -07:00
Wassim Chegham 41fe871e2f feat: add support for azure dynamic session tool (#942)
Co-authored-by: Marcus Schiesser <marcus.schiesser@googlemail.com>
2024-06-27 13:18:05 -07:00
Alex Yang 321c39ddc7 fix: generate api as class (#988) 2024-06-27 09:58:00 -07:00
Alex Yang f7f1af0139 fix: llamacloud sdk edge case (#985) 2024-06-26 23:10:04 -07:00
github-actions[bot] a8c9c279d6 Release 0.4.6 (#981)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-26 17:22:28 -07:00
Alex Yang eece129831 feat: migrate @llamaindex/cloud package (#984) 2024-06-26 16:51:47 -07:00
Alex Yang 80e4f51a83 fix: remove check-minor-version.mjs
We no longer need that
2024-06-26 15:31:08 -07:00
Alex Yang 22ff0837c3 feat: init @llamaindex/core (#938) 2024-06-26 15:28:57 -07:00
Alex Yang 74d7e05bcb ci: continue when commit lockfile error (#982) 2024-06-26 11:06:06 -07:00
Parham Saidi 1feb23bb83 feat: added Gemini tool calling support (#973) 2024-06-26 10:49:11 -07:00
Marcus Schiesser 08c55ec258 fix: Add metadata to PDFs and use Uint8Array for readers content (#980) 2024-06-26 10:16:23 -07:00
github-actions[bot] 394e797567 Release 0.4.5 (#979)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-26 17:42:19 +07:00
Parham Saidi 6c3e5d08b8 fix: switch to correct reference for a static function (#978) 2024-06-26 17:35:22 +07:00
github-actions[bot] 6e19482814 Release 0.4.4 (#977)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-26 14:46:48 +07:00
Marcus Schiesser 42eb73a08f fix: IngestionPipeline not working without vectorStores (#976) 2024-06-26 14:30:58 +07:00
github-actions[bot] 4b59ffee45 Release 0.4.3 (#971)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-25 15:38:10 -07:00
Alex Yang d4e853c8b5 fix: stronger type declaration (#975) 2024-06-25 15:22:13 -07:00
Alex Yang a94b8ec3d2 chore: fix misc (#974) 2024-06-25 14:41:26 -07:00
Alex Yang ed57e6b7be docs: remove i18n temporary (#972) 2024-06-25 14:00:07 -07:00
Alex Yang 05f006e7e1 chore: fix llamaindex version 2024-06-25 12:21:22 -07:00
Alex Yang c3aed72c29 chore: skip install when releasing new version 2024-06-25 12:08:53 -07:00
Alex Yang 7deba94e6b chore: fix lock file 2024-06-25 11:57:04 -07:00
github-actions[bot] d15811f09f Release 0.4.2 (#966)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-25 11:23:01 -07:00
Tasmiyah Iqbal 2ef62a93bb feat: added support for embeddings via HuggingFace Inference API (#929) 2024-06-25 11:16:41 -07:00
Fabian Wimmer 9015aea527 docs: LlamaParse JSON + SimpleDirectoryReader (#970) 2024-06-25 11:16:27 -07:00
Emanuel Ferreira 4bb401e6f9 feat: upgrade llamacloud index (#944)
Co-authored-by: Alex Yang <himself65@outlook.com>
2024-06-25 10:52:06 -07:00
Parham Saidi a87a4d1222 feat: tool calling for Bedrock's Claude and General LLM Agent (#955) 2024-06-25 10:51:40 -07:00
Marcus Schiesser d27ad16335 test: add e2e test for nextjs/node with tokenizer (#963) 2024-06-25 10:02:01 -07:00
1525 changed files with 19290 additions and 86036 deletions
-5
View File
@@ -1,5 +0,0 @@
---
"@llamaindex/env": patch
---
Use tiktoken instead of tiktoken/lite and disable WASM tiktoken for non-Node environments
-5
View File
@@ -1,5 +0,0 @@
---
"llamaindex": patch
---
include node relationships when converting jsonToDoc
+1 -1
View File
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
+28
View File
@@ -0,0 +1,28 @@
name: Publish Preview
on: [pull_request]
jobs:
pre_release:
name: Pre Release
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Pre Release
run: pnpx pkg-pr-new publish ./packages/*
-36
View File
@@ -1,36 +0,0 @@
name: Publish
on:
push:
branches:
- main
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Publish @llamaindex/env
run: npx jsr publish
working-directory: packages/env
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish @llamaindex/core
run: npx jsr publish --allow-slow-types
working-directory: packages/llamaindex
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
+13 -1
View File
@@ -15,7 +15,7 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
@@ -55,3 +55,15 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
# Refs: https://github.com/changesets/changesets/issues/421
- name: Update lock file
continue-on-error: true
run: pnpm install --lockfile-only
- name: Commit lock file
continue-on-error: true
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chore: update lock file"
branch: changeset-release/main
+12 -5
View File
@@ -23,7 +23,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
@@ -45,7 +45,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
@@ -60,7 +60,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
@@ -91,12 +91,13 @@ jobs:
- cloudflare-worker-agent
- nextjs-agent
- nextjs-edge-runtime
- nextjs-node-runtime
# - waku-query-engine
runs-on: ubuntu-latest
name: Build LlamaIndex Example (${{ matrix.packages }})
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
@@ -115,7 +116,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
- uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
@@ -127,6 +128,12 @@ jobs:
run: pnpm run build
- name: Copy examples
run: rsync -rv --exclude=node_modules ./examples ${{ runner.temp }}
- name: Pack @llamaindex/cloud
run: pnpm pack --pack-destination ${{ runner.temp }}
working-directory: packages/cloud
- name: Pack @llamaindex/core
run: pnpm pack --pack-destination ${{ runner.temp }}
working-directory: packages/core
- name: Pack @llamaindex/env
run: pnpm pack --pack-destination ${{ runner.temp }}
working-directory: packages/env
+3
View File
@@ -48,3 +48,6 @@ playwright/.cache/
# intellij
**/.idea
# generated API
packages/cloud/src/client
+1 -35
View File
@@ -76,7 +76,7 @@ main();
node --import tsx ./main.ts
```
### Next.js
### React Server Component (Next.js, Waku, Redwood.JS...)
First, you will need to add a llamaindex plugin to your Next.js project.
@@ -154,40 +154,6 @@ export async function chatWithAgent(
}
```
### Cloudflare Workers
```ts
// src/index.ts
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
const { setEnvs } = await import("@llamaindex/env");
// set environment variables so that the OpenAIAgent can use them
setEnvs(env);
const { OpenAIAgent } = await import("llamaindex");
const agent = new OpenAIAgent({
tools: [],
});
const responseStream = await agent.chat({
stream: true,
message: "Hello? What is the weather today?",
});
const textEncoder = new TextEncoder();
const response = responseStream.pipeThrough(
new TransformStream({
transform: (chunk, controller) => {
controller.enqueue(textEncoder.encode(chunk.response.delta));
},
}),
);
return new Response(response);
},
};
```
## Playground
Check out our NextJS playground at https://llama-playground.vercel.app/. The source is available at https://github.com/run-llama/ts-playground
+107
View File
@@ -1,5 +1,112 @@
# docs
## 0.0.41
### Patch Changes
- 36ddec4: fix: typo in custom page separator parameter for LlamaParse
- Updated dependencies [16ef5dd]
- Updated dependencies [16ef5dd]
- Updated dependencies [36ddec4]
- llamaindex@0.5.0
- @llamaindex/examples@0.0.7
## 0.0.40
### Patch Changes
- llamaindex@0.4.14
## 0.0.39
### Patch Changes
- Updated dependencies [e8f8bea]
- Updated dependencies [304484b]
- llamaindex@0.4.13
## 0.0.38
### Patch Changes
- Updated dependencies [f326ab8]
- llamaindex@0.4.12
## 0.0.37
### Patch Changes
- Updated dependencies [8bf5b4a]
- llamaindex@0.4.11
## 0.0.36
### Patch Changes
- Updated dependencies [7dce3d2]
- llamaindex@0.4.10
## 0.0.35
### Patch Changes
- Updated dependencies [3a96a48]
- llamaindex@0.4.9
## 0.0.34
### Patch Changes
- Updated dependencies [83ebdfb]
- llamaindex@0.4.8
## 0.0.33
### Patch Changes
- Updated dependencies [41fe871]
- Updated dependencies [321c39d]
- Updated dependencies [f7f1af0]
- llamaindex@0.4.7
## 0.0.32
### Patch Changes
- Updated dependencies [1feb23b]
- Updated dependencies [08c55ec]
- llamaindex@0.4.6
## 0.0.31
### Patch Changes
- Updated dependencies [6c3e5d0]
- llamaindex@0.4.5
## 0.0.30
### Patch Changes
- Updated dependencies [42eb73a]
- llamaindex@0.4.4
## 0.0.29
### Patch Changes
- Updated dependencies [2ef62a9]
- llamaindex@0.4.3
- @llamaindex/examples@0.0.6
## 0.0.28
### Patch Changes
- Updated dependencies [a87a4d1]
- Updated dependencies [0730140]
- llamaindex@0.4.2
## 0.0.27
### Patch Changes
+6
View File
@@ -0,0 +1,6 @@
# Gemini Agent
import CodeBlock from "@theme/CodeBlock";
import CodeSourceGemini from "!raw-loader!../../../../examples/gemini/agent.ts";
<CodeBlock language="ts">{CodeSourceGemini}</CodeBlock>
+1 -1
View File
@@ -62,7 +62,7 @@ These building blocks can be customized to reflect ranking preferences, as well
[**Retrievers**](../modules/retriever.md):
A retriever defines how to efficiently retrieve relevant context from a knowledge base (i.e. index) when given a query.
The specific retrieval logic differs for difference indices, the most popular being dense retrieval against a vector index.
The specific retrieval logic differs for different indices, the most popular being dense retrieval against a vector index.
[**Response Synthesizers**](../modules/response_synthesizer.md):
A response synthesizer generates a response from an LLM, using a user query and a given set of retrieved text chunks.
+3 -1
View File
@@ -12,12 +12,14 @@ An “agent” is an automated reasoning and decision engine. It takes in a user
LlamaIndex.TS comes with a few built-in agents, but you can also create your own. The built-in agents include:
- OpenAI Agent
- Anthropic Agent
- Anthropic Agent both via Anthropic and Bedrock (in `@llamaIndex/community`)
- Gemini Agent
- ReACT Agent
## Examples
- [OpenAI Agent](../../examples/agent.mdx)
- [Gemini Agent](../../examples/agent_gemini.mdx)
## Api References
@@ -27,23 +27,25 @@ They can be divided into two groups.
- `apiKey` is required. Can be set as an environment variable `LLAMA_CLOUD_API_KEY`
- `checkInterval` is the interval in seconds to check if the parsing is done. Default is `1`.
- `maxTimeout` is the maximum timout to wait for parsing to finish. Default is `2000`
- `maxTimeout` is the maximum timeout to wait for parsing to finish. Default is `2000`
- `verbose` shows progress of the parsing. Default is `true`
- `ignoreErrors` set to false to get errors while parsing. Default is `true` and returns an empty array on error.
#### Advanced params:
- `resultType` can be set to `markdown`, `text` or `json`. Defaults to `text`. More information about `json` mode on the next pages.
- `language` primarly helps with OCR recognition. Defaults to `en`. Click [here](../../../api/type-aliases/Language.md) for a list of supported languages.
- `language` primarily helps with OCR recognition. Defaults to `en`. Click [here](../../../api/type-aliases/Language.md) for a list of supported languages.
- `parsingInstructions?` Optional. Can help with complicated document structures. See this [LlamaIndex Blog Post](https://www.llamaindex.ai/blog/launching-the-first-genai-native-document-parsing-platform) for an example.
- `skipDiagonalText?` Optional. Set to true to ignore diagonal text. (Text that is not rotated 0, 90, 180 or 270 degrees)
- `invalidateCache?` Optional. Set to true to ignore the LlamaCloud cache. All document are kept in cache for 48hours after the job was completed to avoid processing the same document twice. Can be useful for testing when trying to re-parse the same document with, e.g. different `parsingInstructions`.
- `doNotCache?` Optional. Set to true to not cache the document.
- `fastMode?` Optional. Set to true to use the fast mode. This mode will skip OCR of images, and table/heading reconstruction. Note: Non-compatible with `gpt4oMode`.
- `doNotUnrollColumns?` Optional. Set to true to keep the text according to document layout. Reduce reconstruction accuracy, and LLM's/embedings performances in most cases.
- `pageSeperator?` Optional. The page seperator to use. Defaults is `\\n---\\n`.
- `doNotUnrollColumns?` Optional. Set to true to keep the text according to document layout. Reduce reconstruction accuracy, and LLMs/embeddings performances in most cases.
- `pageSeparator?` Optional. The page separator to use. Defaults is `\\n---\\n`.
- `gpt4oMode` set to true to use GPT-4o to extract content. Default is `false`.
- `gpt4oApiKey?` Optional. Set the GPT-4o API key. Lowers the cost of parsing by using your own API key. Your OpenAI account will be charged. Can also be set in the environment variable `LLAMA_CLOUD_GPT4O_API_KEY`.
- `boundingBox?` Optional. Specify an area of the document to parse. Expects the bounding box margins as a string in clockwise order, e.g. `boundingBox = "0.1,0,0,0"` to not parse the top 10% of the document.
- `targetPages?` Optional. Specify which pages to parse by specifying them as a comma-separated list. First page is `0`.
- `numWorkers` as in the python version, is set in `SimpleDirectoryReader`. Default is 1.
### LlamaParse with SimpleDirectoryReader
@@ -8,7 +8,7 @@ In JSON mode, LlamaParse will return a data structure representing the parsed ob
## Usage
For Json mode, you need to use `loadJson`. The `resultType` is automatically set with this method. Currently it can't be used with `SimpleDirectoryReader`.
For Json mode, you need to use `loadJson`. The `resultType` is automatically set with this method.
More information about indexing the results on the next page.
```ts
@@ -54,6 +54,42 @@ Within page objects, the following keys may be present depending on your documen
- `images`: Any images extracted from the page.
- `items`: An array of heading, text and table objects in the order they appear on the page.
### JSON Mode with SimpleDirectoryReader
All Readers share a `loadData` method with `SimpleDirectoryReader` that promises to return a uniform Document with Metadata. This makes JSON mode incompatible with SimpleDirectoryReader.
However, a simple work around is to create a new reader class that extends `LlamaParseReader` and adds a new method or overrides `loadData`, wrapping around JSON mode, extracting the required values, and returning a Document object.
```ts
import { LlamaParseReader, Document } from "llamaindex";
class LlamaParseReaderWithJson extends LlamaParseReader {
// Override the loadData method
override async loadData(filePath: string): Promise<Document[]> {
// Call loadJson method that was inherited by LlamaParseReader
const jsonObjs = await super.loadJson(filePath);
let documents: Document[] = [];
jsonObjs.forEach((jsonObj) => {
// Making sure it's an array before iterating over it
if (Array.isArray(jsonObj.pages)) {
}
const docs = jsonObj.pages.map(
(page: { text: string; page: number }) =>
new Document({ text: page.text, metadata: { page: page.page } }),
);
documents = documents.concat(docs);
});
return documents;
}
}
```
Now we have documents with page number as metadata. This new reader can be used like any other and be integrated with SimpleDirectoryReader. Since it extends `LlamaParseReader`, you can use the same params.
You can assign any other values of the JSON response to the Document as needed.
## API Reference
- [LlamaParseReader](../../../api/classes/LlamaParseReader.md)
- [SimpleDirectoryReader](../../../api/classes/SimpleDirectoryReader.md)
@@ -15,7 +15,7 @@ Settings.llm = new Bedrock({
});
```
Currently only supports Anthropic models:
Currently only supports Anthropic and Meta models:
```ts
ANTHROPIC_CLAUDE_INSTANT_1 = "anthropic.claude-instant-v1";
@@ -25,6 +25,10 @@ ANTHROPIC_CLAUDE_3_SONNET = "anthropic.claude-3-sonnet-20240229-v1:0";
ANTHROPIC_CLAUDE_3_HAIKU = "anthropic.claude-3-haiku-20240307-v1:0";
ANTHROPIC_CLAUDE_3_OPUS = "anthropic.claude-3-opus-20240229-v1:0"; // available on us-west-2
ANTHROPIC_CLAUDE_3_5_SONNET = "anthropic.claude-3-5-sonnet-20240620-v1:0";
META_LLAMA2_13B_CHAT = "meta.llama2-13b-chat-v1";
META_LLAMA2_70B_CHAT = "meta.llama2-70b-chat-v1";
META_LLAMA3_8B_INSTRUCT = "meta.llama3-8b-instruct-v1:0";
META_LLAMA3_70B_INSTRUCT = "meta.llama3-70b-instruct-v1:0";
```
Sonnet, Haiku and Opus are multimodal, image_url only supports base64 data url format, e.g. `data:image/jpeg;base64,SGVsbG8sIFdvcmxkIQ==`
-24
View File
@@ -25,30 +25,6 @@ const config = {
onBrokenLinks: "warn",
onBrokenMarkdownLinks: "warn",
// Even if you don't use internalization, you can use this field to set useful
// metadata like html lang. For example, if your site is Chinese, you may want
// to replace "en" with "zh-Hans".
i18n: {
defaultLocale: "en",
locales: [
"en",
"zh-Hans",
"es",
"fr",
"de",
"ja",
"ko",
"pt",
"ar",
"it",
"tr",
"pl",
"nl",
"vi",
"th",
], // "fa", "ru", "ro", "sv", "hu", "cs", "el", "da", "fi", "he", "no", "hi", "in", "sl", "se", "sk", "uk", "bg", "hr", "lt", "lv", "et", "cat"
},
presets: [
[
"@docusaurus/preset-classic",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

@@ -1 +0,0 @@
../../../../docs/api
@@ -1,86 +0,0 @@
---
sidebar_position: 3
---
# المفاهيم على المستوى العالي
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يساعدك LlamaIndex.TS في بناء تطبيقات قائمة على LLM (مثل Q&A و chatbot) على بيانات مخصصة.
في هذا الدليل عن المفاهيم على المستوى العالي، ستتعلم:
- كيف يمكن لـ LLM الإجابة على الأسئلة باستخدام بياناتك الخاصة.
- المفاهيم الرئيسية والوحدات في LlamaIndex.TS لبناء خط أنابيب الاستعلام الخاص بك.
## الإجابة على الأسئلة عبر بياناتك
يستخدم LlamaIndex طريقة مكونة من مرحلتين عند استخدام LLM مع بياناتك:
1. **مرحلة الفهرسة**: إعداد قاعدة المعرفة، و
2. **مرحلة الاستعلام**: استرداد السياق ذي الصلة من المعرفة لمساعدة LLM في الاستجابة لسؤال
![](./_static/concepts/rag.jpg)
تُعرف هذه العملية أيضًا باسم "استرجاع معزز للتوليد" (RAG).
يوفر LlamaIndex.TS أدوات أساسية لجعل كلا المرحلتين سهلتين للغاية.
دعنا نستكشف كل مرحلة بالتفصيل.
### مرحلة الفهرسة
يساعدك LlamaIndex.TS في إعداد قاعدة المعرفة باستخدام مجموعة من موصلات البيانات والفهارس.
![](./_static/concepts/indexing.jpg)
[**محمّلات البيانات**](./modules/high_level/data_loader.md):
موصل البيانات (أي `Reader`) يقوم بتجميع البيانات من مصادر بيانات مختلفة وتنسيقات بيانات مختلفة في تمثيل بسيط للـ `Document` (نص وبيانات تعريفية بسيطة).
[**المستندات / العقد**](./modules/high_level/documents_and_nodes.md): المستند هو حاوية عامة حول أي مصدر بيانات - على سبيل المثال، ملف PDF، نتائج واجهة برمجة التطبيقات، أو بيانات استرداد من قاعدة بيانات. العقد هو الوحدة الذرية للبيانات في LlamaIndex ويمثل "قطعة" من المستند الأصلي. إنه تمثيل غني يتضمن بيانات تعريفية وعلاقات (مع عقد أخرى) لتمكين عمليات الاسترجاع الدقيقة والتعبيرية.
[**فهارس البيانات**](./modules/high_level/data_index.md):
بمجرد أن تقوم بتجميع بياناتك، يساعدك LlamaIndex في فهرسة البيانات في تنسيق سهل الاسترداد.
تحت الغطاء، يقوم LlamaIndex بتحليل المستندات الخام إلى تمثيلات وسيطة، وحساب تضمينات الناقلات، وتخزين بياناتك في الذاكرة أو على القرص.
"
### مرحلة الاستعلام
في مرحلة الاستعلام، يقوم خط الأنابيب للاستعلام بجلب السياق الأكثر صلة بناءً على استعلام المستخدم،
ويمرر ذلك إلى LLM (جنبًا إلى جنب مع الاستعلام) لتوليد استجابة.
يمنح ذلك LLM معرفة محدثة ليست موجودة في بيانات التدريب الأصلية لديه،
(مما يقلل أيضًا من الهلوسة).
التحدي الرئيسي في مرحلة الاستعلام هو الاسترجاع والتنسيق والاستدلال عبر قواعد المعرفة (المحتملة).
يوفر LlamaIndex وحدات قابلة للتركيب تساعدك في بناء ودمج خطوط أنابيب RAG لـ Q&A (محرك الاستعلام)، chatbot (محرك الدردشة)، أو كجزء من وكيل.
يمكن تخصيص هذه الكتل البنائية لتعكس تفضيلات التصنيف، وكذلك تركيبها للاستدلال عبر عدة قواعد معرفة بطريقة منظمة.
![](./_static/concepts/querying.jpg)
#### الكتل الأساسية
[**مسترجعات**](./modules/low_level/retriever.md):
يحدد المسترجع كيفية استرجاع السياق ذي الصلة بكفاءة من قاعدة المعرفة (أي الفهرس) عند إعطاء استعلام.
تختلف منطق الاسترجاع المحددة حسب الفهارس المختلفة، والأكثر شيوعًا هو الاسترجاع الكثيف ضد فهرس الناقل.
[**مركبات الاستجابة**](./modules/low_level/response_synthesizer.md):
تقوم مركبة الاستجابة بتوليد استجابة من LLM باستخدام استعلام المستخدم ومجموعة معينة من أجزاء النص المسترجعة.
"
#### خطوط الأنابيب
[**محركات الاستعلام**](./modules/high_level/query_engine.md):
محرك الاستعلام هو خط أنابيب شامل يتيح لك طرح الأسئلة على بياناتك.
يأخذ استعلامًا بلغة طبيعية ويعيد استجابة، جنبًا إلى جنب مع السياق المرجعي المسترجع والممرر إلى LLM.
[**محركات الدردشة**](./modules/high_level/chat_engine.md):
محرك الدردشة هو خط أنابيب شامل لإجراء محادثة مع بياناتك
(عدة تفاعلات بدلاً من سؤال وجواب واحد).
"
@@ -1,61 +0,0 @@
---
sidebar_position: 4
---
# أمثلة من البداية إلى النهاية
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
نقدم العديد من الأمثلة من البداية إلى النهاية باستخدام LlamaIndex.TS في المستودع
تحقق من الأمثلة أدناه أو جربها وأكملها في دقائق مع دروس تفاعلية على Github Codespace المقدمة من Dev-Docs [هنا](https://codespaces.new/team-dev-docs/lits-dev-docs-playground?devcontainer_path=.devcontainer%2Fjavascript_ltsquickstart%2Fdevcontainer.json):
## [محرك الدردشة](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/chatEngine.ts)
اقرأ ملفًا وتحدث عنه مع LLM.
## [فهرس الفيكتور](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndex.ts)
إنشاء فهرس فيكتور واستعلامه. سيستخدم فهرس الفيكتور التضمينات لاسترداد أعلى k عقد ذات صلة. بشكل افتراضي ، يكون k الأعلى هو 2.
"
## [مؤشر الملخص](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/summaryIndex.ts)
إنشاء مؤشر قائمة واستعلامه. يستخدم هذا المثال أيضًا `LLMRetriever` ، الذي سيستخدم LLM لتحديد أفضل العقد لاستخدامها عند إنشاء الإجابة.
"
## [حفظ / تحميل فهرس](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/storageContext.ts)
إنشاء وتحميل فهرس ناقل. يحدث التخزين المؤقت على القرص تلقائيًا في LlamaIndex.TS بمجرد إنشاء كائن سياق التخزين.
"
## [فهرس الناقل المخصص](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndexCustomize.ts)
إنشاء فهرس ناقل واستعلامه، مع تكوين `LLM` و `ServiceContext` و `similarity_top_k`.
"
## [OpenAI LLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/openai.ts)
أنشئ OpenAI LLM واستخدمه مباشرة للدردشة.
"
## [Llama2 DeuceLLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/llamadeuce.ts)
إنشاء Llama-2 LLM واستخدامه مباشرة للدردشة.
"
## [محرك استعلام الأسئلة الفرعية](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts)
يستخدم `محرك استعلام الأسئلة الفرعية` الذي يقسم الاستعلامات المعقدة إلى أسئلة فرعية متعددة، ثم يجمع الاستجابة عبر الإجابات على جميع الأسئلة الفرعية.
"
## [وحدات منخفضة المستوى](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/lowlevel.ts)
يستخدم هذا المثال العديد من المكونات منخفضة المستوى، مما يزيل الحاجة إلى محرك استعلام فعلي. يمكن استخدام هذه المكونات في أي مكان، في أي تطبيق، أو تخصيصها وتصنيفها الفرعي لتلبية احتياجاتك الخاصة.
@@ -1,17 +0,0 @@
---
sidebar_position: 5
---
# البيئات
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يدعم LlamaIndex حاليًا رسميًا NodeJS 18 و NodeJS 20.
## NextJS App Router
إذا كنت تستخدم معالج الطرق / الوظائف الخادمة في NextJS App Router ، فستحتاج إلى استخدام وضع NodeJS:
```js
export const runtime = "nodejs"; // الافتراضي
```
@@ -1,67 +0,0 @@
---
sidebar_position: 1
---
# التثبيت والإعداد
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
تأكد من أن لديك NodeJS v18 أو أحدث.
## باستخدام create-llama
أسهل طريقة للبدء مع LlamaIndex هي باستخدام `create-llama`. هذه الأداة سطر الأوامر تمكنك من بدء بناء تطبيق LlamaIndex جديد بسرعة، مع كل شيء معد لك.
ما عليك سوى تشغيل
<Tabs>
<TabItem value="1" label="npm" default>
```bash
npx create-llama@latest
```
</TabItem>
<TabItem value="2" label="Yarn">
```bash
yarn create llama
```
</TabItem>
<TabItem value="3" label="pnpm">
```bash
pnpm create llama@latest
```
</TabItem>
</Tabs>
للبدء. بمجرد إنشاء التطبيق الخاص بك، قم بتشغيل
```bash npm2yarn
npm run dev
```
لبدء خادم التطوير. يمكنك ثم زيارة [http://localhost:3000](http://localhost:3000) لرؤية تطبيقك.
## التثبيت من NPM
```bash npm2yarn
npm install llamaindex
```
### المتغيرات البيئية
تستخدم أمثلتنا OpenAI افتراضيًا. ستحتاج إلى إعداد مفتاح Open AI الخاص بك على النحو التالي:
```bash
export OPENAI_API_KEY="sk-......" # استبدله بالمفتاح الخاص بك من https://platform.openai.com/account/api-keys
```
إذا كنت ترغب في تحميله تلقائيًا في كل مرة، قم بإضافته إلى ملف .zshrc/.bashrc الخاص بك.
تحذير: لا تقم بإضافة مفتاح OpenAI الخاص بك إلى نظام التحكم في الإصدارات.
"
@@ -1,60 +0,0 @@
---
sidebar_position: 0
slug: /
---
# ما هو LlamaIndex.TS؟
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
LlamaIndex.TS هو إطار بيانات لتطبيقات LLM لاستيعاب وتنظيم والوصول إلى البيانات الخاصة أو الخاصة بالمجال. في حين أن حزمة Python متاحة أيضًا (انظر [هنا](https://docs.llamaindex.ai/en/stable/)), يوفر LlamaIndex.TS ميزات أساسية في حزمة بسيطة ، محسنة للاستخدام مع TypeScript.
## 🚀 لماذا LlamaIndex.TS؟
في جوهرها ، توفر LLMs واجهة لغة طبيعية بين البشر والبيانات المستنتجة. تأتي النماذج المتاحة على نطاق واسع محملة مسبقًا بكميات هائلة من البيانات المتاحة للجمهور ، من ويكيبيديا وقوائم البريد الإلكتروني إلى الكتب المدرسية وشفرة المصدر.
غالبًا ما تتطلب التطبيقات المبنية على LLMs تعزيز هذه النماذج بالبيانات الخاصة أو الخاصة بالمجال. للأسف ، يمكن توزيع هذه البيانات عبر تطبيقات ومخازن بيانات معزولة. إنها خلف واجهات برمجة التطبيقات ، في قواعد البيانات SQL ، أو محبوسة في ملفات PDF وعروض تقديمية.
هنا يأتي دور **LlamaIndex.TS**.
## 🦙 كيف يمكن أن يساعد LlamaIndex.TS؟
يوفر LlamaIndex.TS الأدوات التالية:
- **تحميل البيانات**: استيعاب البيانات الحالية الخاصة بك بتنسيقات `.txt`, `.pdf`, `.csv`, `.md` و `.docx` مباشرة.
- **فهارس البيانات**: تنظيم البيانات الخاصة بك في تمثيلات وسيطة سهلة وفعالة للاستخدام من قبل LLMs.
- **المحركات**: توفر واجهات الوصول إلى اللغة الطبيعية لبياناتك. على سبيل المثال:
- محركات الاستعلام هي واجهات استرجاع قوية للإخراج المعزز بالمعرفة.
- محركات الدردشة هي واجهات محادثة للتفاعلات "ذهابًا وإيابًا" متعددة الرسائل مع بياناتك.
## 👨‍👩‍👧‍👦 من أجل من هو LlamaIndex؟
يوفر LlamaIndex.TS مجموعة أدوات أساسية ، ضرورية لأي شخص يقوم ببناء تطبيقات LLM باستخدام JavaScript و TypeScript.
يتيح لنا واجهة برمجة التطبيقات على مستوى عالي استخدام LlamaIndex.TS لاستيعاب واستعلام البيانات الخاصة بهم.
بالنسبة للتطبيقات المعقدة أكثر ، تتيح لنا واجهات برمجة التطبيقات على مستوى أدنى للمستخدمين المتقدمين تخصيص وتوسيع أي وحدة - موصلات البيانات والفهارس وأجهزة الاسترجاع ومحركات الاستعلام - لتناسب احتياجاتهم.
## البدء
`npm install llamaindex`
تتضمن وثائقنا [تعليمات التثبيت](./installation.mdx) و[دليل البداية](./starter.md) لبناء تطبيقك الأول.
بمجرد أن تكون جاهزًا وتعمل ، يحتوي [مفاهيم عالية المستوى](./getting_started/concepts.md) على نظرة عامة على الهندسة المعمارية المتعددة المستويات لـ LlamaIndex. لمزيد من الأمثلة العملية التفصيلية ، يمكنك الاطلاع على [دروس النهاية إلى النهاية](./end_to_end.md).
## 🗺️ النظام البيئي
لتنزيل أو المساهمة ، ابحث عن LlamaIndex على:
- Github: https://github.com/run-llama/LlamaIndexTS
- NPM: https://www.npmjs.com/package/llamaindex
"
## المجتمع
هل تحتاج إلى مساعدة؟ هل لديك اقتراح لميزة؟ انضم إلى مجتمع LlamaIndex:
- تويتر: https://twitter.com/llama_index
- ديسكورد: https://discord.gg/dGcwcsnxhU
@@ -1,22 +0,0 @@
---
sidebar_position: 4
---
# محرك الدردشة (ChatEngine)
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
محرك الدردشة هو طريقة سريعة وبسيطة للدردشة مع البيانات في الفهرس الخاص بك.
```typescript
const retriever = index.asRetriever();
const chatEngine = new ContextChatEngine({ retriever });
// بدء الدردشة
const response = await chatEngine.chat(query);
```
## مراجع الواجهة البرمجية
- [محرك الدردشة السياقي (ContextChatEngine)](../../api/classes/ContextChatEngine.md)
- [محرك الدردشة المكثف للأسئلة (CondenseQuestionChatEngine)](../../api/classes/ContextChatEngine.md)
@@ -1,27 +0,0 @@
---
sidebar_position: 2
---
# الفهرس
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
الفهرس هو الحاوية الأساسية والتنظيم لبياناتك. يدعم LlamaIndex.TS نوعين من الفهارس:
- `VectorStoreIndex` - سيقوم بإرسال أعلى `Node` الموجودة إلى LLM عند إنشاء استجابة. القيمة الافتراضية لأعلى `k` هي 2.
- `SummaryIndex` - سيقوم بإرسال كل `Node` في الفهرس إلى LLM لإنشاء استجابة.
```typescript
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: "اختبار" });
const index = await VectorStoreIndex.fromDocuments([document]);
```
## مرجع الواجهة البرمجية
- [SummaryIndex](../../api/classes/SummaryIndex.md)
- [VectorStoreIndex](../../api/classes/VectorStoreIndex.md)
"
@@ -1,19 +0,0 @@
---
sidebar_position: 1
---
# قارئ / محمل
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يدعم LlamaIndex.TS تحميل الملفات بسهولة من المجلدات باستخدام فئة `SimpleDirectoryReader`. حاليًا ، يتم دعم الملفات `.txt` ، `.pdf` ، `.csv` ، `.md` و `.docx` ، مع المزيد المخطط له في المستقبل!
```typescript
import { SimpleDirectoryReader } from "llamaindex";
documents = new SimpleDirectoryReader().loadData("./data");
```
## مرجع الواجهة البرمجية
- [SimpleDirectoryReader](../../api/classes/SimpleDirectoryReader.md)
@@ -1,22 +0,0 @@
---
sidebar_position: 0
---
# المستندات والعقد
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
`المستندات` و `العقد` هما العناصر الأساسية لأي فهرس. بينما يكون واجهة برمجة التطبيق (API) لهذه الكائنات مشابهة، يُمثل كائن `المستند` ملفات كاملة، بينما تكون `العقد` قطعًا أصغر من ذلك المستند الأصلي، والتي تكون مناسبة لـ LLM و Q&A.
```typescript
import { Document } from "llamaindex";
document = new Document({ text: "نص", metadata: { key: "val" } });
```
## مرجع الواجهة البرمجية
- [المستند (Document)](../../api/classes/Document.md)
- [نص العقد (TextNode)](../../api/classes/TextNode.md)
"
@@ -1,42 +0,0 @@
---
sidebar_position: 3
---
# محرك الاستعلامات (QueryEngine)
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يقوم محرك الاستعلامات بتجميع "Retriever" و "ResponseSynthesizer" في أنبوبة، والتي ستستخدم سلسلة الاستعلام لاسترداد العقد ومن ثم إرسالها إلى LLM لتوليد استجابة.
```typescript
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query("سلسلة الاستعلام");
```
## محرك الاستعلام للأسئلة الفرعية
الفكرة الأساسية لمحرك الاستعلام للأسئلة الفرعية هي تقسيم استعلام واحد إلى استعلامات متعددة، والحصول على إجابة لكل من تلك الاستعلامات، ثم دمج تلك الإجابات المختلفة في استجابة واحدة متسقة للمستخدم. يمكنك أن تفكر فيها كتقنية "فكر في ذلك خطوة بخطوة" ولكن بتكرار مصادر البيانات الخاصة بك!
### البدء
أسهل طريقة لبدء تجربة محرك الاستعلام للأسئلة الفرعية هي تشغيل ملف subquestion.ts في [examples](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts).
```bash
npx ts-node subquestion.ts
```
"
### الأدوات
يتم تنفيذ محرك الاستعلام للأسئلة الفرعية باستخدام الأدوات. الفكرة الأساسية للأدوات هي أنها خيارات قابلة للتنفيذ لنموذج اللغة الكبيرة. في هذه الحالة، يعتمد محرك الاستعلام للأسئلة الفرعية على أداة QueryEngineTool، والتي كما تخمن هي أداة لتشغيل استعلامات على محرك الاستعلام. يتيح لنا ذلك إعطاء النموذج خيارًا للاستعلام عن وثائق مختلفة لأسئلة مختلفة على سبيل المثال. يمكنك أيضًا أن تتخيل أن محرك الاستعلام للأسئلة الفرعية يمكنه استخدام أداة تبحث عن شيء ما على الويب أو تحصل على إجابة باستخدام Wolfram Alpha.
يمكنك معرفة المزيد عن الأدوات من خلال الاطلاع على وثائق LlamaIndex Python https://gpt-index.readthedocs.io/en/latest/core_modules/agent_modules/tools/root.html
"
## مرجع واجهة برمجة التطبيق (API)
- [محرك استعلام الاسترجاع (RetrieverQueryEngine)](../../api/classes/RetrieverQueryEngine.md)
- [محرك استعلام السؤال الفرعي (SubQuestionQueryEngine)](../../api/classes/SubQuestionQueryEngine.md)
- [أداة محرك الاستعلام (QueryEngineTool)](../../api/interfaces/QueryEngineTool.md)
@@ -1,33 +0,0 @@
# الوحدات الأساسية
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يوفر LlamaIndex.TS عدة وحدات أساسية، مقسمة إلى وحدات عالية المستوى للبدء السريع ووحدات منخفضة المستوى لتخصيص المكونات الرئيسية حسب الحاجة.
## وحدات عالية المستوى
- [**المستند**](./high_level/documents_and_nodes.md): يمثل المستند ملف نصي أو ملف PDF أو قطعة بيانات متتابعة أخرى.
- [**العقدة**](./high_level/documents_and_nodes.md): هو البناء الأساسي للبيانات. في أغلب الأحيان، تكون هذه أجزاء من المستند المقسمة إلى قطع قابلة للإدارة وصغيرة بما يكفي ليتم تغذيتها إلى نموذج التضمين و LLM.
- [**القارئ/المحمل**](./high_level/data_loader.md): القارئ أو المحمل هو شيء يأخذ المستند في العالم الحقيقي ويحوله إلى فئة المستند التي يمكن استخدامها في الفهرس الخاص بك والاستعلامات. ندعم حاليًا ملفات النص العادي وملفات PDF والمزيد الكثير.
- [**الفهارس**](./high_level/data_index.md): تخزن الفهارس العقد وتضمينات تلك العقد.
- [**محرك الاستعلامات**](./high_level/query_engine.md): محركات الاستعلامات هي التي تولد الاستعلام الذي تدخله وتعيد لك النتيجة. عمومًا، تجمع محركات الاستعلامات بين تعليمة مسبقة مبنية مع العقد المحددة من الفهرس الخاص بك لتعطي LLM السياق الذي يحتاجه للإجابة على استعلامك.
- [**محرك الدردشة**](./high_level/chat_engine.md): يساعدك محرك الدردشة على بناء روبوت دردشة سيتفاعل مع فهرسك.
## وحدة منخفضة المستوى
- [**LLM**](./low_level/llm.md): فئة LLM هي واجهة موحدة فوق مزود نموذج لغة كبير مثل OpenAI GPT-4 أو Anthropic Claude أو Meta LLaMA. يمكنك توريثها لكتابة موصل إلى نموذج اللغة الخاص بك.
- [**Embedding**](./low_level/embedding.md): يتم تمثيل التضمين كمتجه من الأرقام العائمة. نموذج التضمين الافتراضي لدينا هو text-embedding-ada-002 من OpenAI ويتكون كل تضمين يولده من 1,536 رقمًا عائمًا. نموذج التضمين الشائع الآخر هو BERT الذي يستخدم 768 رقمًا عائمًا لتمثيل كل عقدة. نوفر عددًا من الأدوات للعمل مع التضمين بما في ذلك 3 خيارات لحساب التشابه و Maximum Marginal Relevance.
- [**TextSplitter/NodeParser**](./low_level/node_parser.md): تعتبر استراتيجيات تقسيم النصوص مهمة للغاية لفعالية البحث في التضمين. حاليًا، على الرغم من أن لدينا قيمة افتراضية، إلا أنه لا يوجد حلاً مناسبًا للجميع. اعتمادًا على وثائق المصدر، قد ترغب في استخدام أحجام واستراتيجيات تقسيم مختلفة. حاليًا، ندعم التقسيم حسب الحجم الثابت، التقسيم حسب الحجم الثابت مع أجزاء تتداخل، التقسيم حسب الجملة، والتقسيم حسب الفقرة. يتم استخدام مقسم النصوص بواسطة NodeParser عند تقسيم `Document` إلى `Node`.
- [**Retriever**](./low_level/retriever.md): يقوم Retriever بتحديد العقد التي يتم استردادها من الفهرس. هنا، قد ترغب في محاولة استرداد عدد أكبر أو أقل من العقد لكل استعلام، تغيير وظيفة التشابه الخاصة بك، أو إنشاء استرداد خاص بك لكل حالة استخدام فردية في تطبيقك. على سبيل المثال، قد ترغب في وجود استرداد منفصل لمحتوى الشفرة مقابل محتوى النص.
- [**ResponseSynthesizer**](./low_level/response_synthesizer.md): يتحمل ResponseSynthesizer مسؤولية أخذ سلسلة استعلام واستخدام قائمة من العقد لإنشاء استجابة. يمكن أن يأخذ هذا الشكل العديد من الأشكال، مثل التكرار عبر جميع السياق وتحسين الإجابة، أو بناء شجرة من الملخصات وإرجاع الملخص الجذري.
- [**Storage**](./low_level/storage.md): في نقطة ما، سترغب في تخزين الفهارس والبيانات والمتجهات بدلاً من إعادة تشغيل نماذج التضمين في كل مرة. IndexStore و DocStore و VectorStore و KVStore هي تجريدات تتيح لك ذلك. مجتمعة، تشكل هذه التجريدات سياق التخزين. حاليًا، نسمح لك بالاحتفاظ بالتضمينات الخاصة بك في ملفات على نظام الملفات (أو نظام ملفات افتراضي في الذاكرة)، ولكننا نضيف أيضًا تكاملات مع قواعد بيانات المتجهات.
@@ -1,26 +0,0 @@
---
sidebar_position: 1
---
# تضمين
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يتولى النموذج المضمن في LlamaIndex إنشاء تمثيلات رقمية للنص. بشكل افتراضي ، ستستخدم LlamaIndex نموذج `text-embedding-ada-002` من OpenAI.
يمكن تعيين ذلك بشكل صريح في كائن `ServiceContext`.
```typescript
import { OpenAIEmbedding, serviceContextFromDefaults } from "llamaindex";
const openaiEmbeds = new OpenAIEmbedding();
const serviceContext = serviceContextFromDefaults({ embedModel: openaiEmbeds });
```
## مرجع الواجهة البرمجية
- [OpenAIEmbedding](../../api/classes/OpenAIEmbedding.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
"
@@ -1,26 +0,0 @@
---
sidebar_position: 0
---
# LLM
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يتولى LLM قراءة النص وتوليد استجابات لغوية طبيعية للاستفسارات. بشكل افتراضي ، يستخدم LlamaIndex.TS `gpt-3.5-turbo`.
يمكن تعيين LLM بشكل صريح في كائن `ServiceContext`.
```typescript
import { OpenAI, serviceContextFromDefaults } from "llamaindex";
const openaiLLM = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0 });
const serviceContext = serviceContextFromDefaults({ llm: openaiLLM });
```
## مرجع الواجهة البرمجية
- [OpenAI](../../api/classes/OpenAI.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
"
@@ -1,37 +0,0 @@
---
sidebar_position: 3
---
# NodeParser (محلل العقدة)
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
`NodeParser` في LlamaIndex مسؤول عن تقسيم كائنات `Document` إلى كائنات `Node` أكثر إدارة. عند استدعاء `.fromDocuments()`, يتم استخدام `NodeParser` من `ServiceContext` للقيام بذلك تلقائيًا بالنسبة لك. بدلاً من ذلك ، يمكنك استخدامه لتقسيم المستندات مسبقًا.
```typescript
import { Document, SimpleNodeParser } from "llamaindex";
const nodeParser = new SimpleNodeParser();
const nodes = nodeParser.getNodesFromDocuments([
new Document({ text: "أنا عمري 10 سنوات. جون عمره 20 سنة." }),
]);
```
## TextSplitter (مقسم النص)
سيقوم مقسم النص الأساسي بتقسيم النص إلى جمل. يمكن أيضًا استخدامه كوحدة مستقلة لتقسيم النص الخام.
```typescript
import { SentenceSplitter } from "llamaindex";
const splitter = new SentenceSplitter({ chunkSize: 1 });
const textSplits = splitter.splitText("مرحبًا بالعالم");
```
## مرجع الواجهة البرمجية
- [SimpleNodeParser (محلل العقدة البسيط)](../../api/classes/SimpleNodeParser.md)
- [SentenceSplitter (مقسم الجمل)](../../api/classes/SentenceSplitter.md)
"
@@ -1,45 +0,0 @@
---
sidebar_position: 6
---
# مركب الاستجابة (ResponseSynthesizer)
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
مركب الاستجابة (ResponseSynthesizer) مسؤول عن إرسال الاستعلام والعقد وقوالب الاستفسار إلى LLM لتوليد استجابة. هناك بعض وسائط رئيسية لتوليد استجابة:
- `تحسين`: "إنشاء وتحسين" إجابة عن طريق المرور تتاليًا عبر كل قطعة نص مُسترجعة. يتم إجراء استدعاء LLM منفصل لكل عقدة. جيد للإجابات المفصلة.
- `مضغوط وتحسين` (الافتراضي): "ضغط" الاستفسار أثناء كل استدعاء LLM عن طريق حشو أكبر عدد ممكن من قطع النص التي يمكن أن تتناسب مع حجم الاستفسار الأقصى. إذا كان هناك الكثير من القطع لتعبئتها في استفسار واحد، "إنشاء وتحسين" إجابة عن طريق المرور بعدة استفسارات مضغوطة. نفس العملية كـ `تحسين`، ولكن يجب أن تؤدي إلى مزيد من استدعاءات LLM أقل.
- `ملخص الشجرة`: بناء شجرة بشكل متكرر بناءً على مجموعة من قطع النص والاستعلام، وإرجاع العقدة الجذرية كاستجابة. جيد لأغراض التلخيص.
- `منشئ الاستجابة البسيط`: تطبيق الاستعلام على كل قطعة نص وتجميع الاستجابات في مصفوفة. يعيد سلسلة متصلة من جميع الاستجابات. جيد عندما تحتاج إلى تشغيل نفس الاستعلام بشكل منفصل على كل قطعة نص.
```typescript
import { NodeWithScore, ResponseSynthesizer, TextNode } from "llamaindex";
const responseSynthesizer = new ResponseSynthesizer();
const nodesWithScore: NodeWithScore[] = [
{
node: new TextNode({ text: "أنا عمري 10 سنوات." }),
score: 1,
},
{
node: new TextNode({ text: "جون عمره 20 سنة." }),
score: 0.5,
},
];
const response = await responseSynthesizer.synthesize(
"ما هو عمري؟",
nodesWithScore,
);
console.log(response.response);
```
## مرجع الواجهة البرمجية
- [مركب الاستجابة (ResponseSynthesizer)](../../api/classes/ResponseSynthesizer.md)
- [تحسين (Refine)](../../api/classes/Refine.md)
- [مضغوط وتحسين (CompactAndRefine)](../../api/classes/CompactAndRefine.md)
- [ملخص الشجرة (TreeSummarize)](../../api/classes/TreeSummarize.md)
- [منشئ الاستجابة البسيط (SimpleResponseBuilder)](../../api/classes/SimpleResponseBuilder.md)
@@ -1,23 +0,0 @@
---
sidebar_position: 5
---
# الباحث (Retriever)
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
الباحث في LlamaIndex هو ما يُستخدم لاسترداد العقد (`Node`) من فهرس باستخدام سلسلة الاستعلام. سيقوم الباحث `VectorIndexRetriever` بجلب أعلى k عقد مشابهة. بينما سيقوم الباحث `SummaryIndexRetriever` بجلب جميع العقد بغض النظر عن الاستعلام.
```typescript
const retriever = vector_index.asRetriever();
retriever.similarityTopK = 3;
// جلب العقد!
const nodesWithScore = await retriever.retrieve({ query: "سلسلة الاستعلام" });
```
## مرجع الواجهة البرمجية (API Reference)
- [SummaryIndexRetriever](../../api/classes/SummaryIndexRetriever.md)
- [SummaryIndexLLMRetriever](../../api/classes/SummaryIndexLLMRetriever.md)
- [VectorIndexRetriever](../../api/classes/VectorIndexRetriever.md)
@@ -1,30 +0,0 @@
---
sidebar_position: 7
---
# التخزين
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
يعمل التخزين في LlamaIndex.TS تلقائيًا بمجرد تكوين كائن `StorageContext`. قم بتكوين `persistDir` وربطه بفهرس.
في الوقت الحالي ، يتم دعم حفظ وتحميل البيانات من القرص فقط ، مع وجود تكاملات مستقبلية مخططة!
```typescript
import { Document, VectorStoreIndex, storageContextFromDefaults } from "./src";
const storageContext = await storageContextFromDefaults({
persistDir: "./storage",
});
const document = new Document({ text: "نص اختبار" });
const index = await VectorStoreIndex.fromDocuments([document], {
storageContext,
});
```
## مرجع الواجهة البرمجية
- [StorageContext](../../api/interfaces/StorageContext.md)
"
@@ -1,58 +0,0 @@
---
sidebar_position: 2
---
# دليل البداية
`تمت ترجمة هذه الوثيقة تلقائيًا وقد تحتوي على أخطاء. لا تتردد في فتح طلب سحب لاقتراح تغييرات.`
بمجرد [تثبيت LlamaIndex.TS باستخدام NPM](installation) وإعداد مفتاح OpenAI الخاص بك، أنت الآن جاهز لبدء تطبيقك الأول:
في مجلد جديد:
```bash npm2yarn
npm install typescript
npm install @types/node
npx tsc --init # إذا لزم الأمر
```
أنشئ ملف `example.ts`. سيقوم هذا الكود بتحميل بعض البيانات المثالية، وإنشاء وثيقة، وفهرسة الوثيقة (مما ينشئ تضمينات باستخدام OpenAI)، ثم إنشاء محرك الاستعلام للإجابة على الأسئلة حول البيانات.
```ts
// example.ts
import fs from "fs/promises";
import { Document, VectorStoreIndex } from "llamaindex";
async function main() {
// تحميل المقالة من abramov.txt في Node
const essay = await fs.readFile(
"node_modules/llamaindex/examples/abramov.txt",
"utf-8",
);
// إنشاء كائن Document بواسطة المقالة
const document = new Document({ text: essay });
// تقسيم النص وإنشاء التضمينات. تخزينها في VectorStoreIndex
const index = await VectorStoreIndex.fromDocuments([document]);
// استعلام الفهرس
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query("ماذا فعل الكاتب في الكلية؟");
// إخراج الاستجابة
console.log(response.toString());
}
main();
```
ثم يمكنك تشغيله باستخدام
```bash
npx ts-node example.ts
```
هل أنت مستعد للمزيد من التعلم؟ تفضل بزيارة منصة NextJS الخاصة بنا على https://llama-playground.vercel.app/. يمكنك العثور على المصدر على https://github.com/run-llama/ts-playground
"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

@@ -1 +0,0 @@
../../../../docs/api
@@ -1,86 +0,0 @@
---
sidebar_position: 3
---
# Високо ниво на концепции
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
LlamaIndex.TS ви помага да създавате приложения, базирани на LLM (например Q&A, чатбот) върху персонализирани данни.
В това ръководство за високо ниво на концепции ще научите:
- как LLM може да отговори на въпроси, използвайки вашите собствени данни.
- ключови концепции и модули в LlamaIndex.TS за създаване на ваша собствена заявка.
## Отговаряне на въпроси върху вашите данни
LlamaIndex използва двустепенен метод при използване на LLM с вашите данни:
1. **стъпка за индексиране**: подготовка на база от знания и
2. **стъпка за заявка**: извличане на съответния контекст от знанията, за да помогне на LLM да отговори на въпрос
![](./_static/concepts/rag.jpg)
Този процес е известен също като Retrieval Augmented Generation (RAG).
LlamaIndex.TS предоставя основния инструментариум, който прави и двете стъпки изключително лесни.
Нека изследваме всяка стъпка подробно.
### Стъпка на индексиране
LlamaIndex.TS ви помага да подготвите базата от знания с помощта на набор от конектори за данни и индекси.
![](./_static/concepts/indexing.jpg)
[**Data Loaders**](./modules/high_level/data_loader.md):
Конектор за данни (т.е. `Reader`) поема данни от различни източници на данни и формати на данни и ги превръща в просто представяне на `Document` (текст и прости метаданни).
[**Documents / Nodes**](./modules/high_level/documents_and_nodes.md): `Document` е общ контейнер за всякакъв вид данни - например PDF, изход от API или извлечени данни от база данни. `Node` е атомарната единица от данни в LlamaIndex и представлява "част" от източниковия `Document`. Това е богато представяне, което включва метаданни и връзки (към други възли), за да позволи точни и изразителни операции за извличане.
[**Data Indexes**](./modules/high_level/data_index.md):
След като сте поели данните си, LlamaIndex ви помага да индексирате данните във формат, който е лесен за извличане.
Под капака, LlamaIndex анализира суровите документи в промеждинни представяния, изчислява векторни вложения и съхранява данните в паметта или на диска.
"
### Стъпка за заявка
В стъпката за заявка, конвейерът за заявки извлича най-съответния контекст, даден на потребителска заявка,
и го предава на LLM (заедно със заявката), за да синтезира отговор.
Това дава на LLM актуални познания, които не са в неговите оригинални обучаващи данни,
(също така намалява халюцинацията).
Основното предизвикателство в стъпката за заявка е извличането, организирането и резонирането върху (потенциално много) бази от знания.
LlamaIndex предоставя модули, които могат да се комбинират и помагат за създаването и интегрирането на RAG конвейери за Q&A (заявки), чатбот (чат двигател) или като част от агент.
Тези строителни блокове могат да бъдат персонализирани, за да отразяват предпочитанията за ранжиране, както и да бъдат комбинирани, за да резонират върху множество бази от знания по структуриран начин.
![](./_static/concepts/querying.jpg)
#### Строителни блокове
[**Извличатели**](./modules/low_level/retriever.md):
Извличател дефинира как да се извлича ефективно съответния контекст от база от знания (т.е. индекс), когато се предостави заявка.
Конкретната логика за извличане се различава за различни индекси, като най-популярното е плътно извличане срещу векторен индекс.
[**Синтезатори на отговори**](./modules/low_level/response_synthesizer.md):
Синтезаторът на отговор генерира отговор от LLM, използвайки потребителска заявка и даден набор от извлечени текстови части.
"
#### Конвейери
[**Заявки**](./modules/high_level/query_engine.md):
Заявката е цялостен конвейер, който ви позволява да задавате въпроси относно вашите данни.
Тя приема заявка на естествен език и връща отговор, заедно с извлечения контекст, предаден на LLM.
[**Чат двигатели**](./modules/high_level/chat_engine.md):
Чат двигателът е цялостен конвейер за провеждане на разговор с вашите данни
(множество въпроси и отговори вместо единичен въпрос и отговор).
"
@@ -1,57 +0,0 @@
---
sidebar_position: 4
---
# Примери от начало до край
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Включени са няколко примера от начало до край, използвайки LlamaIndex.TS в хранилището
Разгледайте примерите по-долу или ги опитайте и завършете за минути с интерактивни уроци на Github Codespace, предоставени от Dev-Docs [тук](https://codespaces.new/team-dev-docs/lits-dev-docs-playground?devcontainer_path=.devcontainer%2Fjavascript_ltsquickstart%2Fdevcontainer.json):
## [Чат двигател (Chat Engine)](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/chatEngine.ts)
Прочетете файл и обсъждайте го с LLM.
## [Векторен индекс](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndex.ts)
Създайте векторен индекс и го запитайте. Векторният индекс ще използва вграждания, за да извлече най-релевантните k върха. По подразбиране, k е 2.
"
## [Summary Index](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/summaryIndex.ts)
Създайте списъчен индекс и го заявете. Този пример също използва `LLMRetriever`, който използва LLM, за да избере най-добрите възли за използване при генериране на отговор.
"
## [Запазване / Зареждане на индекс](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/storageContext.ts)
Създайте и заредете векторен индекс. Запазването на диска в LlamaIndex.TS става автоматично, веднага след като е създаден обект за контекст на съхранение.
## [Персонализиран векторен индекс](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndexCustomize.ts)
Създайте векторен индекс и го заявете, като конфигурирате `LLM`, `ServiceContext` и `similarity_top_k`.
"
## [OpenAI LLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/openai.ts)
Създайте OpenAI LLM и го използвайте директно за чат.
## [Llama2 DeuceLLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/llamadeuce.ts)
Създайте Llama-2 LLM и го използвайте директно за чат.
## [SubQuestionQueryEngine](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts)
Използва `SubQuestionQueryEngine`, който разбива сложни заявки на множество въпроси и след това агрегира отговорите на всички под-въпроси.
"
## [Модули с ниско ниво](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/lowlevel.ts)
Този пример използва няколко компонента с ниско ниво, които премахват нуждата от реален двигател за заявки. Тези компоненти могат да се използват навсякъде, във всяко приложение или да бъдат персонализирани и подкласирани, за да отговарят на вашите нужди.
"
@@ -1,17 +0,0 @@
---
sidebar_position: 5
---
# Среди
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
LlamaIndex в момента официално поддържа NodeJS 18 и NodeJS 20.
## NextJS App Router
Ако използвате обработчици на маршрути/сървърни функции на NextJS App Router, ще трябва да използвате режима на NodeJS:
```js
export const runtime = "nodejs"; // по подразбиране
```
@@ -1,65 +0,0 @@
---
sidebar_position: 1
---
# Инсталация и настройка
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Уверете се, че имате NodeJS v18 или по-нова версия.
## Използване на create-llama
Най-лесният начин да започнете с LlamaIndex е чрез използването на `create-llama`. Този инструмент с команден ред ви позволява бързо да започнете да създавате ново приложение LlamaIndex, като всичко е настроено за вас.
Просто изпълнете
<Tabs>
<TabItem value="1" label="npm" default>
```bash
npx create-llama@latest
```
</TabItem>
<TabItem value="2" label="Yarn">
```bash
yarn create llama
```
</TabItem>
<TabItem value="3" label="pnpm">
```bash
pnpm create llama@latest
```
</TabItem>
</Tabs>
за да започнете. След като приложението ви е генерирано, изпълнете
```bash npm2yarn
npm run dev
```
за да стартирате сървъра за разработка. След това можете да посетите [http://localhost:3000](http://localhost:3000), за да видите вашето приложение.
## Инсталация от NPM
```bash npm2yarn
npm install llamaindex
```
### Променливи на средата
Нашият пример използва OpenAI по подразбиране. Ще трябва да настроите вашия Open AI ключ по следния начин:
```bash
export OPENAI_API_KEY="sk-......" # Заменете с вашия ключ от https://platform.openai.com/account/api-keys
```
Ако искате да го зареждате автоматично всеки път, добавете го към вашия .zshrc/.bashrc.
ВНИМАНИЕ: не добавяйте вашия OpenAI ключ в системата за контрол на версиите.
@@ -1,62 +0,0 @@
---
sidebar_position: 0
slug: /
---
# Какво е LlamaIndex.TS?
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
LlamaIndex.TS е рамка за данни за приложения на LLM, която позволява внасяне, структуриране и достъп до частни или специфични за домейна данни. Въпреки че има наличен и пакет на Python (вижте [тук](https://docs.llamaindex.ai/en/stable/)), LlamaIndex.TS предлага основни функции в едно просто пакетиране, оптимизирано за използване с TypeScript.
## 🚀 Защо LlamaIndex.TS?
В основата си, LLM-ите предлагат естествен езиков интерфейс между хората и изводените данни. Широко разпространените модели са предварително обучени на голямо количество публично достъпни данни, от Уикипедия и списания до учебници и изходен код.
Приложенията, построени върху LLM-и, често изискват допълване на тези модели с частни или специфични за домейна данни. За съжаление, тези данни могат да бъдат разпределени в различни приложения и хранилища на данни. Те се намират зад API-и, в SQL бази данни или са затворени в PDF файлове и презентации.
Тук идва **LlamaIndex.TS**.
## 🦙 Как може да помогне LlamaIndex.TS?
LlamaIndex.TS предоставя следните инструменти:
- **Зареждане на данни** - внасяйте вашите съществуващи данни във формат `.txt`, `.pdf`, `.csv`, `.md` и `.docx` директно
- **Индекси на данни** - структурирайте данните си в промежуточни представяния, които са лесни и ефективни за консумация от LLM.
- **Двигатели** - предоставят достъп до вашите данни чрез естествен език. Например:
- Заявителни двигатели са мощни интерфейси за извличане на знания.
- Чат двигатели са разговорни интерфейси за многократни, "напред и назад" взаимодействия с вашите данни.
"
## 👨‍👩‍👧‍👦 За кого е LlamaIndex?
LlamaIndex.TS предоставя основен набор от инструменти, необходими за всеки, който създава LLM приложения с JavaScript и TypeScript.
Нашето API на високо ниво позволява на начинаещите потребители да използват LlamaIndex.TS за внасяне и заявка на техните данни.
За по-сложни приложения нашите API на по-ниско ниво позволяват на напредналите потребители да персонализират и разширят всяко модул - връзки с данни, индекси, извличатели и заявки, за да отговарят на техните нужди.
## Започване
`npm install llamaindex`
Документацията ни включва [Инструкции за инсталиране](./installation.mdx) и [Урок за начинаещи](./starter.md), за да построите първото си приложение.
След като сте готови, [Високо ниво концепции](./getting_started/concepts.md) представя общ преглед на модулната архитектура на LlamaIndex. За повече практически примери, разгледайте нашите [Уроци от начало до край](./end_to_end.md).
## 🗺️ Екосистема
За да изтеглите или допринесете, намерете LlamaIndex на:
- Github: https://github.com/run-llama/LlamaIndexTS
- NPM: https://www.npmjs.com/package/llamaindex
"
## Общност
Нуждаете се от помощ? Имате предложение за функционалност? Присъединете се към общността на LlamaIndex:
- Twitter: https://twitter.com/llama_index
- Discord: https://discord.gg/dGcwcsnxhU
@@ -1,24 +0,0 @@
---
sidebar_position: 4
---
# Чат двигател (ChatEngine)
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Чат двигателят е бърз и прост начин да чатите с данните във вашата индекс.
```typescript
const retriever = index.asRetriever();
const chatEngine = new ContextChatEngine({ retriever });
// започнете да чатите
const response = await chatEngine.chat(query);
```
## Api Референции
- [Чат двигател за контекст (ContextChatEngine)](../../api/classes/ContextChatEngine.md)
- [Чат двигател за кондензиране на въпроси (CondenseQuestionChatEngine)](../../api/classes/ContextChatEngine.md)
"
@@ -1,27 +0,0 @@
---
sidebar_position: 2
---
# Индекс
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Индексът е основният контейнер и организация за вашите данни. LlamaIndex.TS поддържа два вида индекси:
- `VectorStoreIndex` - ще изпраща най-добрите `Node` до LLM при генериране на отговор. По подразбиране, най-добрите два.
- `SummaryIndex` - ще изпраща всеки `Node` в индекса до LLM, за да генерира отговор.
```typescript
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: "тест" });
const index = await VectorStoreIndex.fromDocuments([document]);
```
## API Референция
- [SummaryIndex](../../api/classes/SummaryIndex.md)
- [VectorStoreIndex](../../api/classes/VectorStoreIndex.md)
"
@@ -1,21 +0,0 @@
---
sidebar_position: 1
---
# Четец / Зареждач
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
LlamaIndex.TS поддържа лесно зареждане на файлове от папки с помощта на класа `SimpleDirectoryReader`. В момента се поддържат файлове с разширения `.txt`, `.pdf`, `.csv`, `.md` и `.docx`, с планове за добавяне на още в бъдеще!
```typescript
import { SimpleDirectoryReader } from "llamaindex";
documents = new SimpleDirectoryReader().loadData("./data");
```
## API Референция
- [SimpleDirectoryReader](../../api/classes/SimpleDirectoryReader.md)
"
@@ -1,22 +0,0 @@
---
sidebar_position: 0
---
# Документи и Възли
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
`Документи` и `Възли` са основните строителни блокове на всяко индексиране. Въпреки че API-то за тези обекти е подобно, обектите `Документ` представляват цели файлове, докато `Възли` са по-малки части от оригиналния документ, които са подходящи за LLM и Q&A.
```typescript
import { Document } from "llamaindex";
document = new Document({ text: "текст", metadata: { key: "val" } });
```
## API Референция
- [Документ](../../api/classes/Document.md)
- [ТекстовВъзел](../../api/classes/TextNode.md)
"
@@ -1,40 +0,0 @@
---
sidebar_position: 3
---
# QueryEngine (Заявка на двигател)
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Заявка на двигател обвива `Retriever` и `ResponseSynthesizer` в тръбопровод, който използва низа от заявки, за да извлече възли и след това ги изпраща към LLM, за да генерира отговор.
```typescript
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query("query string");
```
## Заявка на подзапитване на двигател
Основната концепция на Заявка на подзапитване на двигател е, че тя разделя една заявка на множество заявки, получава отговор за всяка от тези заявки и след това комбинира тези различни отговори в един цялостен отговор за потребителя. Можете да си представите това като техника за "мислене стъпка по стъпка", но като итерира върху източниците на данни!
### Започване
Най-лесният начин да започнете да използвате Заявка на подзапитване на двигател е да стартирате файла subquestion.ts в [примерите](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts).
```bash
npx ts-node subquestion.ts
```
### Инструменти
Заявка на подзапитване на двигател е реализирана с инструменти. Основната идея на инструментите е, че те са изпълними опции за големия езиков модел. В този случай нашият Заявка на подзапитване на двигател разчита на QueryEngineTool, който, както се предполага, е инструмент за изпълнение на заявки върху QueryEngine. Това ни позволява да дадем на модела възможност да заявява различни документи за различни въпроси, например. Също така можем да си представим, че Заявка на подзапитване на двигател може да използва инструмент, който търси нещо в Интернет или получава отговор, използвайки Wolfram Alpha.
Можете да научите повече за инструментите, като разгледате документацията на LlamaIndex Python https://gpt-index.readthedocs.io/en/latest/core_modules/agent_modules/tools/root.html
## API Reference (API справка)
- [RetrieverQueryEngine (Заявка на двигател за извличане)](../../api/classes/RetrieverQueryEngine.md)
- [SubQuestionQueryEngine (Заявка на двигател за подзапитване)](../../api/classes/SubQuestionQueryEngine.md)
- [QueryEngineTool (Инструмент за заявка на двигател)](../../api/interfaces/QueryEngineTool.md)
"
@@ -1,33 +0,0 @@
# Основни модули
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
LlamaIndex.TS предлага няколко основни модула, разделени на модули на високо ниво, за бързо стартиране, и модули на ниско ниво, за персонализиране на ключовите компоненти според вашите нужди.
## Модули на високо ниво
- [**Документ**](./high_level/documents_and_nodes.md): Документ представлява текстов файл, PDF файл или друг непрекъснат парче данни.
- [**Възел**](./high_level/documents_and_nodes.md): Основният строителен блок от данни. Най-често това са части от документа, разделени на управляеми парчета, достатъчно малки, за да бъдат подадени на модел за вграждане и LLM.
- [**Четец/Зареждач**](./high_level/data_loader.md): Четецът или зареждачът е нещо, което приема документ от реалния свят и го преобразува в клас Документ, който после може да се използва в индекса и заявките ви. В момента поддържаме обикновени текстови файлове и PDF файлове, с много други, които ще бъдат добавени.
- [**Индекси**](./high_level/data_index.md): Индексите съхраняват Възлите и вгражданията на тези възли.
- [**QueryEngine**](./high_level/query_engine.md): Заявките са това, което генерира заявката, която въвеждате и ви връща резултата. Заявките обикновено комбинират предварително изграден prompt със избрани възли от вашия индекс, за да предоставят на LLM контекста, от който се нуждае, за да отговори на вашата заявка.
- [**ChatEngine**](./high_level/chat_engine.md): ChatEngine ви помага да построите чатбот, който ще взаимодейства с вашите индекси.
## Модули на ниско ниво
- [**LLM**](./low_level/llm.md): Класът LLM е обединен интерфейс над голям доставчик на модели на езика като OpenAI GPT-4, Anthropic Claude или Meta LLaMA. Можете да го наследите, за да напишете конектор към собствен модел на голям език.
- [**Embedding**](./low_level/embedding.md): Вграждането се представя като вектор от числа с плаваща запетая. Нашето вграждане по подразбиране е OpenAI's text-embedding-ada-002 и всяко вграждане, което генерира, се състои от 1,536 числа с плаваща запетая. Друго популярно вграждане е BERT, което използва 768 числа с плаваща запетая, за да представи всеки възел. Предоставяме няколко помощни функции за работа с вграждания, включително 3 опции за изчисляване на подобие и Maximum Marginal Relevance.
- [**TextSplitter/NodeParser**](./low_level/node_parser.md): Стратегиите за разделяне на текст са изключително важни за общата ефективност на търсенето на вграждания. В момента, въпреки че имаме стойност по подразбиране, няма универсално решение. В зависимост от източниците на документите, може да искате да използвате различни размери и стратегии за разделяне. В момента поддържаме разделяне по фиксиран размер, разделяне по фиксиран размер с препокриващи се секции, разделяне по изречение и разделяне по параграф. TextSplitter се използва от NodeParser при разделянето на `Document` на `Node`.
- [**Retriever**](./low_level/retriever.md): Retriever е този, който наистина избира възлите за връщане от индекса. Тук може да желаете да опитате да вземете повече или по-малко възли за всяка заявка, да промените функцията за подобие или да създадете собствен retriever за всеки отделен случай в приложението си. Например може да желаете да имате отделен retriever за съдържание на код срещу текстово съдържание.
- [**ResponseSynthesizer**](./low_level/response_synthesizer.md): ResponseSynthesizer е отговорен за вземането на низ от заявка и използването на списък от `Node`-и за генериране на отговор. Това може да бъде в различни форми, като обхождане на всички контексти и уточняване на отговор, или изграждане на дърво от резюмета и връщане на кореновото резюме.
- [**Storage**](./low_level/storage.md): На някакъв етап ще искате да съхранявате индексите, данните и векторите си, вместо да изпълнявате моделите за вграждане всеки път. IndexStore, DocStore, VectorStore и KVStore са абстракции, които ви позволяват да го направите. Заедно те формират StorageContext. В момента ви позволяваме да запазвате вгражданията си във файлове на файловата система (или виртуална файлова система в паметта), но също така активно добавяме интеграции към Vector Databases.
@@ -1,26 +0,0 @@
---
sidebar_position: 1
---
# Вграждане (Embedding)
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Моделът за вграждане в LlamaIndex е отговорен за създаването на числови представяния на текст. По подразбиране, LlamaIndex използва модела `text-embedding-ada-002` от OpenAI.
Това може да бъде явно зададено в обекта `ServiceContext`.
```typescript
import { OpenAIEmbedding, serviceContextFromDefaults } from "llamaindex";
const openaiEmbeds = new OpenAIEmbedding();
const serviceContext = serviceContextFromDefaults({ embedModel: openaiEmbeds });
```
## API Референция
- [OpenAIEmbedding](../../api/classes/OpenAIEmbedding.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
"
@@ -1,26 +0,0 @@
---
sidebar_position: 0
---
# LLM
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
LLM е отговорен за четене на текст и генериране на отговори на естествен език на заявки. По подразбиране, LlamaIndex.TS използва `gpt-3.5-turbo`.
LLM може да бъде явно зададен в обекта `ServiceContext`.
```typescript
import { OpenAI, serviceContextFromDefaults } from "llamaindex";
const openaiLLM = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0 });
const serviceContext = serviceContextFromDefaults({ llm: openaiLLM });
```
## API Референция
- [OpenAI](../../api/classes/OpenAI.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
"
@@ -1,37 +0,0 @@
---
sidebar_position: 3
---
# NodeParser (Анализатор на възли)
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
`NodeParser` в LlamaIndex е отговорен за разделянето на обекти от тип `Document` на по-лесни за управление обекти от тип `Node`. Когато извикате `.fromDocuments()`, `NodeParser` от `ServiceContext` се използва автоматично за това. Алтернативно, можете да го използвате, за да разделяте документи предварително.
```typescript
import { Document, SimpleNodeParser } from "llamaindex";
const nodeParser = new SimpleNodeParser();
const nodes = nodeParser.getNodesFromDocuments([
new Document({ text: "Аз съм на 10 години. Джон е на 20 години." }),
]);
```
## TextSplitter (TextSplitter)
Основният разделящ текст ще раздели текста на изречения. Той може също да се използва като самостоятелен модул за разделяне на суров текст.
```typescript
import { SentenceSplitter } from "llamaindex";
const splitter = new SentenceSplitter({ chunkSize: 1 });
const textSplits = splitter.splitText("Здравей, свят");
```
## API Reference (API справка)
- [SimpleNodeParser (Прост анализатор на възли)](../../api/classes/SimpleNodeParser.md)
- [SentenceSplitter (Разделяне на изречения)](../../api/classes/SentenceSplitter.md)
"
@@ -1,47 +0,0 @@
---
sidebar_position: 6
---
# ResponseSynthesizer (Синтезатор на отговори)
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
ResponseSynthesizer е отговорен за изпращането на заявката, възлите и шаблоните за подсказки към LLM, за да генерира отговор. Има няколко ключови режима за генериране на отговор:
- `Refine` (Подобряване): "създаване и подобряване" на отговор, като последователно се преминава през всеки извлечен текстов фрагмент. Това прави отделно LLM обаждане за всеки възел. Подходящо за по-подробни отговори.
- `CompactAndRefine` (Компактно и подобряване) (по подразбиране): "компактиране" на подсказката по време на всяко LLM обаждане, като се пълни с колкото може повече текстови фрагменти, които могат да се поберат в максималния размер на подсказката. Ако има твърде много фрагменти, които не могат да се поберат в една подсказка, се "създава и подобрява" отговор, като се преминава през няколко компактни подсказки. Същото като `refine`, но трябва да доведе до по-малко LLM обаждания.
- `TreeSummarize` (Сумиране на дърво): Дадени набор от текстови фрагменти и заявката, рекурсивно се конструира дърво и се връща кореновият възел като отговор. Подходящо за цели на сумиране.
- `SimpleResponseBuilder` (Прост създател на отговори): Дадени набор от текстови фрагменти и заявката, се прилага заявката към всеки текстов фрагмент, като се натрупват отговорите в масив. Връща конкатениран низ от всички отговори. Подходящо, когато трябва да изпълните същата заявка отделно за всеки текстов фрагмент.
```typescript
import { NodeWithScore, ResponseSynthesizer, TextNode } from "llamaindex";
const responseSynthesizer = new ResponseSynthesizer();
const nodesWithScore: NodeWithScore[] = [
{
node: new TextNode({ text: "Аз съм на 10 години." }),
score: 1,
},
{
node: new TextNode({ text: "Джон е на 20 години." }),
score: 0.5,
},
];
const response = await responseSynthesizer.synthesize(
"Колко години съм?",
nodesWithScore,
);
console.log(response.response);
```
## API Референция
- [ResponseSynthesizer (Синтезатор на отговори)](../../api/classes/ResponseSynthesizer.md)
- [Refine (Подобряване)](../../api/classes/Refine.md)
- [CompactAndRefine (Компактно и подобряване)](../../api/classes/CompactAndRefine.md)
- [TreeSummarize (Сумиране на дърво)](../../api/classes/TreeSummarize.md)
- [SimpleResponseBuilder (Прост създател на отговори)](../../api/classes/SimpleResponseBuilder.md)
"
@@ -1,25 +0,0 @@
---
sidebar_position: 5
---
# Retriever (Извличател)
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Извличател в LlamaIndex е това, което се използва за извличане на `Node` от индекс чрез заявка. `VectorIndexRetriever` ще извлече най-подобните k върха. В същото време, `SummaryIndexRetriever` ще извлече всички върхове, независимо от заявката.
```typescript
const retriever = vector_index.asRetriever();
retriever.similarityTopK = 3;
// Извличане на върхове!
const nodesWithScore = await retriever.retrieve({ query: "query string" });
```
## API Reference (API справка)
- [SummaryIndexRetriever](../../api/classes/SummaryIndexRetriever.md)
- [SummaryIndexLLMRetriever](../../api/classes/SummaryIndexLLMRetriever.md)
- [VectorIndexRetriever](../../api/classes/VectorIndexRetriever.md)
"
@@ -1,30 +0,0 @@
---
sidebar_position: 7
---
# Съхранение (Storage)
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
Съхранението в LlamaIndex.TS работи автоматично, след като сте конфигурирали обект `StorageContext`. Просто конфигурирайте `persistDir` и го свържете с индекс.
В момента се поддържа само запазване и зареждане от диск, с планирани бъдещи интеграции!
```typescript
import { Document, VectorStoreIndex, storageContextFromDefaults } from "./src";
const storageContext = await storageContextFromDefaults({
persistDir: "./storage",
});
const document = new Document({ text: "Тестов текст" });
const index = await VectorStoreIndex.fromDocuments([document], {
storageContext,
});
```
## API Референция
- [StorageContext](../../api/interfaces/StorageContext.md)
"
@@ -1,60 +0,0 @@
---
sidebar_position: 2
---
# Начално ръководство
`Тази документация е преведена автоматично и може да съдържа грешки. Не се колебайте да отворите Pull Request, за да предложите промени.`
След като сте [инсталирали LlamaIndex.TS с помощта на NPM](installation) и сте настроили вашия OpenAI ключ, вие сте готови да стартирате първото си приложение:
В нова папка:
```bash npm2yarn
npm install typescript
npm install @types/node
npx tsc --init # ако е необходимо
```
Създайте файла `example.ts`. Този код ще зареди някакви примерни данни, ще създаде документ, ще го индексира (което създава вграждания с помощта на OpenAI) и след това ще създаде търсачка, която да отговаря на въпроси относно данните.
```ts
// example.ts
import fs from "fs/promises";
import { Document, VectorStoreIndex } from "llamaindex";
async function main() {
// Заредете есе от abramov.txt в Node
const essay = await fs.readFile(
"node_modules/llamaindex/examples/abramov.txt",
"utf-8",
);
// Създайте обект Document с есето
const document = new Document({ text: essay });
// Разделете текста и създайте вграждания. Запазете ги в VectorStoreIndex
const index = await VectorStoreIndex.fromDocuments([document]);
// Заявете индекса
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query(
"Какво направи авторът по време на колеж?",
);
// Изведете отговора
console.log(response.toString());
}
main();
```
След това можете да го стартирате чрез
```bash
npx ts-node example.ts
```
Готови ли сте да научите още? Проверете нашия NextJS игрален площад на адрес https://llama-playground.vercel.app/. Изходният код е достъпен на адрес https://github.com/run-llama/ts-playground
"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

@@ -1 +0,0 @@
../../../../docs/api
@@ -1,86 +0,0 @@
---
sidebar_position: 3
---
# Conceptes de Nivell Alt
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
LlamaIndex.TS t'ajuda a construir aplicacions amb potència LLM (per exemple, Q&A, chatbot) sobre dades personalitzades.
En aquesta guia de conceptes de nivell alt, aprendràs:
- com un LLM pot respondre preguntes utilitzant les teves pròpies dades.
- conceptes clau i mòduls en LlamaIndex.TS per compondre la teva pròpia canalització de consulta.
## Resposta a preguntes a través de les teves dades
LlamaIndex utilitza un mètode de dues etapes quan utilitza un LLM amb les teves dades:
1. **etapa d'indexació**: preparació d'una base de coneixement, i
2. **etapa de consulta**: recuperació de context rellevant de la base de coneixement per ajudar el LLM a respondre a una pregunta
![](./_static/concepts/rag.jpg)
Aquest procés també és conegut com a Generació Augmentada per Recuperació (RAG).
LlamaIndex.TS proporciona les eines essencials per facilitar ambdós passos.
Explorarem cada etapa en detall.
### Etapa d'Indexació
LlamaIndex.TS t'ajuda a preparar la base de coneixement amb una sèrie de connectors de dades i índexs.
![](./_static/concepts/indexing.jpg)
[**Carregadors de Dades**](./modules/high_level/data_loader.md):
Un connector de dades (és a dir, `Reader`) ingestiona dades de diferents fonts de dades i formats de dades en una representació simple de `Document` (text i metadades simples).
[**Documents / Nodes**](./modules/high_level/documents_and_nodes.md): Un `Document` és un contenidor genèric al voltant de qualsevol font de dades - per exemple, un PDF, una sortida d'API o dades recuperades d'una base de dades. Un `Node` és la unitat atòmica de dades en LlamaIndex i representa un "tros" d'un `Document` origen. És una representació completa que inclou metadades i relacions (amb altres nodes) per permetre operacions de recuperació precises i expressives.
[**Índexs de Dades**](./modules/high_level/data_index.md):
Un cop hagis ingestat les teves dades, LlamaIndex t'ajuda a indexar les dades en un format fàcil de recuperar.
A sota dels panells, LlamaIndex analitza els documents en representacions intermèdies, calcula incrustacions vectorials i emmagatzema les teves dades a la memòria o al disc.
"
### Etapa de Consulta
En l'etapa de consulta, la canalització de consulta recupera el context més rellevant donada una consulta de l'usuari,
i ho passa al LLM (juntament amb la consulta) per sintetitzar una resposta.
Això proporciona al LLM un coneixement actualitzat que no es troba en les seves dades d'entrenament originals,
(i també redueix la al·lucinació).
El repte clau en l'etapa de consulta és la recuperació, l'orquestració i el raonament sobre bases de coneixement (potencialment moltes).
LlamaIndex proporciona mòduls componibles que t'ajuden a construir i integrar canalitzacions RAG per a Q&A (motor de consulta), chatbot (motor de xat) o com a part d'un agent.
Aquests blocs de construcció es poden personalitzar per reflectir les preferències de classificació, així com compondre el raonament sobre múltiples bases de coneixement de manera estructurada.
![](./_static/concepts/querying.jpg)
#### Blocs de Construcció
[**Recuperadors**](./modules/low_level/retriever.md):
Un recuperador defineix com recuperar eficientment el context rellevant d'una base de coneixement (és a dir, índex) quan se li dóna una consulta.
La lògica de recuperació específica difereix per a diferents índexs, sent la més popular la recuperació densa contra un índex vectorial.
[**Sintetitzadors de Resposta**](./modules/low_level/response_synthesizer.md):
Un sintetitzador de resposta genera una resposta a partir d'un LLM, utilitzant una consulta de l'usuari i un conjunt donat de trossos de text recuperats.
"
#### Canalitzacions
[**Motor de Consulta**](./modules/high_level/query_engine.md):
Un motor de consulta és una canalització de cap a cap que et permet fer preguntes sobre les teves dades.
Rebutja una consulta en llenguatge natural i retorna una resposta, juntament amb el context de referència recuperat i passat al LLM.
[**Motor de Xat**](./modules/high_level/chat_engine.md):
Un motor de xat és una canalització de cap a cap per mantenir una conversa amb les teves dades
(múltiples intercanvis en lloc d'una única pregunta i resposta).
"
@@ -1,59 +0,0 @@
---
sidebar_position: 4
---
# Exemples de principi a fi
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
Incluïm diversos exemples de principi a fi utilitzant LlamaIndex.TS en el repositori.
Comproveu els exemples a continuació o proveu-los i completeu-los en qüestió de minuts amb els tutorials interactius de Github Codespace proporcionats per Dev-Docs [aquí](https://codespaces.new/team-dev-docs/lits-dev-docs-playground?devcontainer_path=.devcontainer%2Fjavascript_ltsquickstart%2Fdevcontainer.json):
## [Motor de xat](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/chatEngine.ts)
Llegeix un fitxer i xerra sobre això amb el LLM.
## [Índex de vectors](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndex.ts)
Creeu un índex de vectors i consulteu-lo. L'índex de vectors utilitzarà incrustacions per obtenir els nodes més rellevants més importants. Per defecte, els nodes més importants són 2.
"
## [Índex de resum](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/summaryIndex.ts)
Creeu un índex de llista i consulteu-lo. Aquest exemple també utilitza el `LLMRetriever`, que utilitzarà el LLM per seleccionar els millors nodes a utilitzar en la generació de la resposta.
"
## [Guardar / Carregar un Índex](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/storageContext.ts)
Creeu i carregueu un índex de vectors. La persistència al disc en LlamaIndex.TS es produeix automàticament una vegada que es crea un objecte de context d'emmagatzematge.
## [Índex de vectors personalitzat](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndexCustomize.ts)
Creeu un índex de vectors i consulteu-lo, mentre configureu el `LLM`, el `ServiceContext` i el `similarity_top_k`.
## [OpenAI LLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/openai.ts)
Crea un OpenAI LLM i utilitza'l directament per a xatejar.
"
## [Llama2 DeuceLLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/llamadeuce.ts)
Crea un Llama-2 LLM i utilitza'l directament per a xatejar.
"
## [Motor de consulta de subpreguntes](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts)
Utilitza el `Motor de consulta de subpreguntes`, que descompon les consultes complexes en múltiples preguntes i després agrega una resposta a través de les respostes a totes les subpreguntes.
"
## [Mòduls de baix nivell](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/lowlevel.ts)
Aquest exemple utilitza diversos components de baix nivell, el que elimina la necessitat d'un motor de consulta real. Aquests components es poden utilitzar en qualsevol lloc, en qualsevol aplicació, o personalitzar i sub-classificar per satisfer les vostres pròpies necessitats.
"
@@ -1,17 +0,0 @@
---
sidebar_position: 5
---
# Entorns
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
LlamaIndex actualment suporta oficialment NodeJS 18 i NodeJS 20.
## Enrutador d'aplicacions NextJS
Si utilitzeu els gestors de rutes/funcions sense servidor de l'enrutador d'aplicacions NextJS, haureu d'utilitzar el mode NodeJS:
```js
export const runtime = "nodejs"; // per defecte
```
@@ -1,65 +0,0 @@
---
sidebar_position: 1
---
# Instal·lació i configuració
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
Assegureu-vos de tenir NodeJS v18 o superior.
## Utilitzant create-llama
La manera més senzilla de començar amb LlamaIndex és utilitzant `create-llama`. Aquesta eina de línia de comandes us permet començar ràpidament a construir una nova aplicació LlamaIndex, amb tot configurat per a vosaltres.
Simplement executeu
<Tabs>
<TabItem value="1" label="npm" default>
```bash
npx create-llama@latest
```
</TabItem>
<TabItem value="2" label="Yarn">
```bash
yarn create llama
```
</TabItem>
<TabItem value="3" label="pnpm">
```bash
pnpm create llama@latest
```
</TabItem>
</Tabs>
per començar. Un cop la vostra aplicació estigui generada, executeu
```bash npm2yarn
npm run dev
```
per iniciar el servidor de desenvolupament. A continuació, podeu visitar [http://localhost:3000](http://localhost:3000) per veure la vostra aplicació.
## Instal·lació des de NPM
```bash npm2yarn
npm install llamaindex
```
### Variables d'entorn
Els nostres exemples utilitzen OpenAI per defecte. Hauràs de configurar la teva clau d'Open AI de la següent manera:
```bash
export OPENAI_API_KEY="sk-......" # Reemplaça amb la teva clau de https://platform.openai.com/account/api-keys
```
Si vols que es carregui automàticament cada vegada, afegiu-la al teu .zshrc/.bashrc.
ADVERTÈNCIA: no afegiu la vostra clau d'OpenAI al control de versions.
@@ -1,60 +0,0 @@
---
sidebar_position: 0
slug: /
---
# Què és LlamaIndex.TS?
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
LlamaIndex.TS és un marc de dades per a aplicacions LLM per a ingestió, estructuració i accés a dades privades o específiques del domini. Tot i que també hi ha un paquet de Python disponible (vegeu [aquí](https://docs.llamaindex.ai/en/stable/)), LlamaIndex.TS ofereix funcionalitats principals en un paquet senzill, optimitzat per a l'ús amb TypeScript.
## 🚀 Per què LlamaIndex.TS?
En el seu nucli, els LLM ofereixen una interfície de llenguatge natural entre els humans i les dades inferides. Els models àmpliament disponibles estan preentrenats amb grans quantitats de dades disponibles públicament, des de Wikipedia i llistes de correu fins a llibres de text i codi font.
Les aplicacions construïdes sobre els LLM sovint requereixen augmentar aquests models amb dades privades o específiques del domini. Desafortunadament, aquestes dades es poden trobar distribuïdes en aplicacions i emmagatzematges de dades aïllats. Es troben darrere d'APIs, en bases de dades SQL o atrapades en PDFs i presentacions.
Aquí és on entra en joc **LlamaIndex.TS**.
## 🦙 Com pot ajudar LlamaIndex.TS?
LlamaIndex.TS proporciona les següents eines:
- **Càrrega de dades** per a la ingestió directa de les vostres dades en format `.txt`, `.pdf`, `.csv`, `.md` i `.docx`.
- **Índexs de dades** per a l'estructuració de les vostres dades en representacions intermèdies que siguin fàcils i eficients per als LLM per a consumir.
- **Motors** que proporcionen accés en llenguatge natural a les vostres dades. Per exemple:
- Els motors de consulta són interfícies de recuperació potents per a una sortida augmentada de coneixement.
- Els motors de xat són interfícies conversacionals per a interaccions de "anar i venir" amb múltiples missatges amb les vostres dades.
## 👨‍👩‍👧‍👦 Per a qui és LlamaIndex?
LlamaIndex.TS proporciona un conjunt d'eines bàsiques essencials per a qualsevol persona que construeixi aplicacions LLM amb JavaScript i TypeScript.
La nostra API de nivell superior permet als usuaris principiants utilitzar LlamaIndex.TS per a la ingestió i consulta de les seves dades.
Per a aplicacions més complexes, les nostres API de nivell inferior permeten als usuaris avançats personalitzar i ampliar qualsevol mòdul: connectors de dades, índexs, recuperadors i motors de consulta, per adaptar-se a les seves necessitats.
## Començar
`npm install llamaindex`
La nostra documentació inclou [Instruccions d'Instal·lació](./installation.mdx) i un [Tutorial d'Inici](./starter.md) per a construir la vostra primera aplicació.
Un cop tingueu tot a punt, [Conceptes de Nivell Alt](./getting_started/concepts.md) ofereix una visió general de l'arquitectura modular de LlamaIndex. Per a més exemples pràctics, consulteu els nostres [Tutorials de Principi a Fi](./end_to_end.md).
## 🗺️ Ecosistema
Per descarregar o contribuir, troba LlamaIndex a:
- Github: https://github.com/run-llama/LlamaIndexTS
- NPM: https://www.npmjs.com/package/llamaindex
"
## Comunitat
Necessiteu ajuda? Teniu alguna suggerència de funcionalitat? Uneix-te a la comunitat de LlamaIndex:
- Twitter: https://twitter.com/llama_index
- Discord: https://discord.gg/dGcwcsnxhU
@@ -1,22 +0,0 @@
---
sidebar_position: 4
---
# ChatEngine (Motor de Xat)
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
El motor de xat és una manera ràpida i senzilla de xatejar amb les dades del teu índex.
```typescript
const retriever = index.asRetriever();
const chatEngine = new ContextChatEngine({ retriever });
// comença a xatejar
const response = await chatEngine.chat(query);
```
## Referències de l'API
- [ContextChatEngine (Motor de Xat de Context)](../../api/classes/ContextChatEngine.md)
- [CondenseQuestionChatEngine (Motor de Xat de Pregunta Condensada)](../../api/classes/ContextChatEngine.md)
@@ -1,25 +0,0 @@
---
sidebar_position: 2
---
# Índex
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
Un índex és el contenidor bàsic i l'organització de les dades. LlamaIndex.TS suporta dos índexos:
- `VectorStoreIndex` - enviarà els `Node`s més rellevants al LLM quan generi una resposta. El valor per defecte de top-k és 2.
- `SummaryIndex` - enviarà cada `Node` de l'índex al LLM per generar una resposta.
```typescript
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: "prova" });
const index = await VectorStoreIndex.fromDocuments([document]);
```
## Referència de l'API
- [SummaryIndex](../../api/classes/SummaryIndex.md)
- [VectorStoreIndex](../../api/classes/VectorStoreIndex.md)
@@ -1,21 +0,0 @@
---
sidebar_position: 1
---
# Lector / Carregador
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
LlamaIndex.TS permet carregar fàcilment fitxers des de carpetes utilitzant la classe `SimpleDirectoryReader`. Actualment, són compatibles els fitxers `.txt`, `.pdf`, `.csv`, `.md` i `.docx`, i s'està planejant afegir-ne més en el futur!
```typescript
import { SimpleDirectoryReader } from "llamaindex";
documents = new SimpleDirectoryReader().loadData("./data");
```
## Referència de l'API
- [SimpleDirectoryReader](../../api/classes/SimpleDirectoryReader.md)
"
@@ -1,22 +0,0 @@
---
sidebar_position: 0
---
# Documents i Nodes
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
Els `Document`s i els `Node`s són els blocs de construcció bàsics de qualsevol índex. Tot i que l'API per a aquests objectes és similar, els objectes `Document` representen fitxers sencers, mentre que els `Node`s són peces més petites d'aquest document original, que són adequades per a un LLM i una Q&A.
```typescript
import { Document } from "llamaindex";
document = new Document({ text: "text", metadata: { key: "val" } });
```
## Referència de l'API
- [Document](../../api/classes/Document.md)
- [TextNode](../../api/classes/TextNode.md)
"
@@ -1,40 +0,0 @@
---
sidebar_position: 3
---
# Motor de Consulta (QueryEngine)
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
Un motor de consulta envolta un `Retriever` i un `ResponseSynthesizer` en un pipeline, que utilitzarà la cadena de consulta per obtenir nodes i després enviar-los a LLM per generar una resposta.
```typescript
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query("cadena de consulta");
```
## Motor de Consulta de Subpreguntes
El concepte bàsic del Motor de Consulta de Subpreguntes és que divideix una única consulta en múltiples consultes, obté una resposta per a cada una d'aquestes consultes i després combina aquestes respostes diferents en una única resposta coherent per a l'usuari. Podeu pensar-hi com a tècnica de "pensa-ho pas a pas" però iterant sobre les fonts de dades!
### Començar
La manera més senzilla de començar a provar el Motor de Consulta de Subpreguntes és executar el fitxer subquestion.ts a [examples](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts).
```bash
npx ts-node subquestion.ts
```
"
### Eines
El SubQuestionQueryEngine s'implementa amb eines. La idea bàsica de les eines és que són opcions executables per al gran model de llenguatge. En aquest cas, el nostre SubQuestionQueryEngine es basa en QueryEngineTool, que, com podeu imaginar, és una eina per executar consultes en un QueryEngine. Això ens permet donar al model una opció per consultar diferents documents per a diferents preguntes, per exemple. També podeu imaginar que el SubQuestionQueryEngine podria utilitzar una eina que cerqui alguna cosa a la web o obtingui una resposta utilitzant Wolfram Alpha.
Podeu obtenir més informació sobre les eines consultant la documentació de LlamaIndex Python a https://gpt-index.readthedocs.io/en/latest/core_modules/agent_modules/tools/root.html
## Referència de l'API
- [Motor de Consulta del Recuperador (RetrieverQueryEngine)](../../api/classes/RetrieverQueryEngine.md)
- [Motor de Consulta de Subpreguntes (SubQuestionQueryEngine)](../../api/classes/SubQuestionQueryEngine.md)
- [Eina del Motor de Consulta (QueryEngineTool)](../../api/interfaces/QueryEngineTool.md)
@@ -1,33 +0,0 @@
# Mòduls principals
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
LlamaIndex.TS ofereix diversos mòduls principals, separats en mòduls de nivell alt per començar ràpidament i mòduls de nivell baix per personalitzar els components clau segons les teves necessitats.
## Mòduls de Nivell Alt
- [**Document**](./high_level/documents_and_nodes.md): Un document representa un fitxer de text, un fitxer PDF o una altra peça de dades contínua.
- [**Node**](./high_level/documents_and_nodes.md): El bloc de construcció de dades bàsic. Normalment, aquests són parts del document dividides en peces manejables que són prou petites per ser alimentades a un model d'incrustació i LLM.
- [**Reader/Loader**](./high_level/data_loader.md): Un lector o carregador és quelcom que pren un document del món real i el transforma en una classe Document que després es pot utilitzar en el teu índex i consultes. Actualment, donem suport a fitxers de text pla i PDFs, i en el futur en donarem suport a molts més.
- [**Índexs**](./high_level/data_index.md): els índexs emmagatzemen els Nodes i les incrustacions d'aquests nodes.
- [**Motor de Consulta**](./high_level/query_engine.md): Els motors de consulta són els que generen la consulta que introduïu i us retornen el resultat. Els motors de consulta generalment combinen una indicació predefinida amb nodes seleccionats del vostre índex per donar al LLM el context que necessita per respondre a la vostra consulta.
- [**Motor de Xat**](./high_level/chat_engine.md): Un motor de xat us ajuda a construir un chatbot que interactuarà amb els vostres índexs.
## Mòdul de nivell baix
- [**LLM**](./low_level/llm.md): La classe LLM és una interfície unificada per a un proveïdor de models de llenguatge gran com OpenAI GPT-4, Anthropic Claude o Meta LLaMA. Pots crear una subclasse per escriure un connector per al teu propi model de llenguatge gran.
- [**Embedding**](./low_level/embedding.md): Un embedding es representa com un vector de nombres de punt flotant. El nostre model d'embedding per defecte és el text-embedding-ada-002 de OpenAI i cada embedding que genera consisteix en 1.536 nombres de punt flotant. Un altre model d'embedding popular és BERT, que utilitza 768 nombres de punt flotant per representar cada node. Proporcionem diverses utilitats per treballar amb embeddings, incloent-hi 3 opcions de càlcul de similitud i Maximum Marginal Relevance.
- [**TextSplitter/NodeParser**](./low_level/node_parser.md): Les estratègies de divisió de text són increïblement importants per a l'eficàcia global de la cerca d'embedding. Actualment, tot i que tenim una opció per defecte, no hi ha una solució única per a tots els casos. Depenent dels documents font, potser voldràs utilitzar diferents mides i estratègies de divisió. Actualment, donem suport a la divisió per mida fixa, la divisió per mida fixa amb seccions superposades, la divisió per frases i la divisió per paràgrafs. El text splitter s'utilitza pel NodeParser per dividir els `Document`s en `Node`s.
- [**Retriever**](./low_level/retriever.md): El Retriever és el que decideix quins Nodes recuperar de l'índex. Aquí, potser voldràs provar a recuperar més o menys Nodes per consulta, canviar la funció de similitud o crear el teu propi retriever per a cada cas d'ús individual de l'aplicació. Per exemple, potser voldràs tenir un retriever separat per al contingut de codi i el contingut de text.
- [**ResponseSynthesizer**](./low_level/response_synthesizer.md): El ResponseSynthesizer és responsable de prendre una cadena de consulta i utilitzar una llista de `Node`s per generar una resposta. Això pot prendre diverses formes, com iterar sobre tot el context i refinar una resposta o construir un arbre de resums i retornar el resum principal.
- [**Storage**](./low_level/storage.md): En algun moment, voldràs emmagatzemar els teus índexs, dades i vectors en comptes d'executar els models d'embedding cada vegada. IndexStore, DocStore, VectorStore i KVStore són abstraccions que et permeten fer-ho. En conjunt, formen el StorageContext. Actualment, et permetem persistir els teus embeddings en fitxers al sistema de fitxers (o en un sistema de fitxers virtual a la memòria), però també estem afegint activament integracions amb bases de dades de vectors.
@@ -1,26 +0,0 @@
---
sidebar_position: 1
---
# Incrustació
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
El model d'incrustació a LlamaIndex és responsable de crear representacions numèriques de text. Per defecte, LlamaIndex utilitzarà el model `text-embedding-ada-002` de OpenAI.
Això es pot establir explícitament a l'objecte `ServiceContext`.
```typescript
import { OpenAIEmbedding, serviceContextFromDefaults } from "llamaindex";
const openaiEmbeds = new OpenAIEmbedding();
const serviceContext = serviceContextFromDefaults({ embedModel: openaiEmbeds });
```
## Referència de l'API
- [OpenAIEmbedding](../../api/classes/OpenAIEmbedding.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
"
@@ -1,26 +0,0 @@
---
sidebar_position: 0
---
# LLM
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
El LLM és responsable de llegir text i generar respostes en llenguatge natural a les consultes. Per defecte, LlamaIndex.TS utilitza `gpt-3.5-turbo`.
El LLM es pot establir explícitament a l'objecte `ServiceContext`.
```typescript
import { OpenAI, serviceContextFromDefaults } from "llamaindex";
const openaiLLM = new OpenAI({ model: "gpt-3.5-turbo", temperature: 0 });
const serviceContext = serviceContextFromDefaults({ llm: openaiLLM });
```
## Referència de l'API
- [OpenAI](../../api/classes/OpenAI.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
"
@@ -1,39 +0,0 @@
---
sidebar_position: 3
---
# NodeParser
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
El `NodeParser` a LlamaIndex és responsable de dividir els objectes `Document` en objectes `Node` més manejables. Quan truqueu a `.fromDocuments()`, s'utilitza el `NodeParser` del `ServiceContext` per fer-ho automàticament per a vosaltres. Alternativament, podeu utilitzar-lo per dividir els documents amb antelació.
```typescript
import { Document, SimpleNodeParser } from "llamaindex";
const nodeParser = new SimpleNodeParser();
const nodes = nodeParser.getNodesFromDocuments([
new Document({ text: "Tinc 10 anys. John té 20 anys." }),
]);
```
## TextSplitter
El separador de text subjacent dividirà el text per frases. També es pot utilitzar com a mòdul independent per dividir text en brut.
```typescript
import { SentenceSplitter } from "llamaindex";
const splitter = new SentenceSplitter({ chunkSize: 1 });
const textSplits = splitter.splitText("Hola món");
```
"
## Referència de l'API
- [SimpleNodeParser](../../api/classes/SimpleNodeParser.md)
- [SentenceSplitter](../../api/classes/SentenceSplitter.md)
"
@@ -1,47 +0,0 @@
---
sidebar_position: 6
---
# ResponseSynthesizer (Sintetitzador de Resposta)
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
El ResponseSynthesizer és responsable d'enviar la consulta, els nodes i les plantilles de prompt al LLM per generar una resposta. Hi ha alguns modes clau per generar una resposta:
- `Refine` (Refinar): "crear i refinar" una resposta passant seqüencialment per cada fragment de text recuperat. Això fa una crida separada al LLM per a cada Node. És bo per a respostes més detallades.
- `CompactAndRefine` (Compactar i Refinar) (per defecte): "compactar" el prompt durant cada crida al LLM, omplint tants fragments de text com puguin cabre dins de la mida màxima del prompt. Si hi ha massa fragments per a omplir en un sol prompt, "crear i refinar" una resposta passant per diversos prompts compactes. És el mateix que `refine`, però hauria de resultar en menys crides al LLM.
- `TreeSummarize` (Resumir en forma d'arbre): Donat un conjunt de fragments de text i la consulta, construeix recursivament un arbre i retorna el node arrel com a resposta. És bo per a fins de resum.
- `SimpleResponseBuilder` (Constructor de Resposta Simple): Donat un conjunt de fragments de text i la consulta, aplica la consulta a cada fragment de text mentre acumula les respostes en un array. Retorna una cadena concatenada de totes les respostes. És bo quan necessites executar la mateixa consulta per separat en cada fragment de text.
```typescript
import { NodeWithScore, ResponseSynthesizer, TextNode } from "llamaindex";
const responseSynthesizer = new ResponseSynthesizer();
const nodesWithScore: NodeWithScore[] = [
{
node: new TextNode({ text: "Tinc 10 anys." }),
score: 1,
},
{
node: new TextNode({ text: "John té 20 anys." }),
score: 0.5,
},
];
const response = await responseSynthesizer.synthesize(
"Quina edat tinc?",
nodesWithScore,
);
console.log(response.response);
```
## Referència de l'API
- [ResponseSynthesizer (Sintetitzador de Resposta)](../../api/classes/ResponseSynthesizer.md)
- [Refine (Refinar)](../../api/classes/Refine.md)
- [CompactAndRefine (Compactar i Refinar)](../../api/classes/CompactAndRefine.md)
- [TreeSummarize (Resumir en forma d'arbre)](../../api/classes/TreeSummarize.md)
- [SimpleResponseBuilder (Constructor de Resposta Simple)](../../api/classes/SimpleResponseBuilder.md)
"
@@ -1,23 +0,0 @@
---
sidebar_position: 5
---
# Retriever (Recuperador)
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
Un recuperador a LlamaIndex és el que s'utilitza per obtenir `Node`s d'un índex utilitzant una cadena de consulta. Un `VectorIndexRetriever` obtindrà els nodes més similars al top-k. Mentrestant, un `SummaryIndexRetriever` obtindrà tots els nodes, independentment de la consulta.
```typescript
const recuperador = vector_index.asRetriever();
recuperador.similarityTopK = 3;
// Obteniu els nodes!
const nodesAmbPuntuació = await recuperador.retrieve({ query: "cadena de consulta" });
```
## Referència de l'API
- [SummaryIndexRetriever (Recuperador d'índex de resum)](../../api/classes/SummaryIndexRetriever.md)
- [SummaryIndexLLMRetriever (Recuperador d'índex de resum LLM)](../../api/classes/SummaryIndexLLMRetriever.md)
- [VectorIndexRetriever (Recuperador d'índex de vectors)](../../api/classes/VectorIndexRetriever.md)
@@ -1,30 +0,0 @@
---
sidebar_position: 7
---
# Emmagatzematge
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
L'emmagatzematge a LlamaIndex.TS funciona automàticament un cop hagueu configurat un objecte `StorageContext`. Simplement configureu el `persistDir` i adjunteu-lo a un índex.
En aquest moment, només s'admet guardar i carregar des del disc, amb integracions futures planejades!
```typescript
import { Document, VectorStoreIndex, storageContextFromDefaults } from "./src";
const storageContext = await storageContextFromDefaults({
persistDir: "./storage",
});
const document = new Document({ text: "Text de prova" });
const index = await VectorStoreIndex.fromDocuments([document], {
storageContext,
});
```
## Referència de l'API
- [StorageContext](../../api/interfaces/StorageContext.md)
"
@@ -1,60 +0,0 @@
---
sidebar_position: 2
---
# Tutorial d'Inici
`Aquesta documentació s'ha traduït automàticament i pot contenir errors. No dubteu a obrir una Pull Request per suggerir canvis.`
Un cop hagueu [instal·lat LlamaIndex.TS utilitzant NPM](installation) i hagueu configurat la vostra clau d'OpenAI, esteu preparats per començar la vostra primera aplicació:
En una nova carpeta:
```bash npm2yarn
npm install typescript
npm install @types/node
npx tsc --init # si cal
```
Creeu el fitxer `example.ts`. Aquest codi carregarà algunes dades d'exemple, crearà un document, l'indexarà (que crea incrustacions utilitzant OpenAI) i després crearà un motor de consulta per respondre preguntes sobre les dades.
```ts
// example.ts
import fs from "fs/promises";
import { Document, VectorStoreIndex } from "llamaindex";
async function main() {
// Carrega l'assaig des de abramov.txt a Node
const assaig = await fs.readFile(
"node_modules/llamaindex/examples/abramov.txt",
"utf-8",
);
// Crea un objecte Document amb l'assaig
const document = new Document({ text: assaig });
// Divideix el text i crea incrustacions. Emmagatzema-les en un VectorStoreIndex
const index = await VectorStoreIndex.fromDocuments([document]);
// Consulta l'índex
const motorConsulta = index.asQueryEngine();
const resposta = await motorConsulta.query(
"Què va fer l'autor a la universitat?",
);
// Mostra la resposta
console.log(resposta.toString());
}
main();
```
A continuació, podeu executar-lo utilitzant
```bash
npx ts-node example.ts
```
Preparat per aprendre més? Consulteu el nostre espai de jocs NextJS a https://llama-playground.vercel.app/. El codi font està disponible a https://github.com/run-llama/ts-playground
"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

@@ -1 +0,0 @@
../../../../docs/api
@@ -1,86 +0,0 @@
---
sidebar_position: 3
---
# Vysokoúrovňové koncepty
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
LlamaIndex.TS vám pomáhá vytvářet aplikace s podporou LLM (např. Q&A, chatbot) nad vlastními daty.
V tomto průvodci vysokoúrovňovými koncepty se dozvíte:
- jak LLM může odpovídat na otázky pomocí vašich vlastních dat.
- klíčové koncepty a moduly v LlamaIndex.TS pro sestavení vlastního dotazovacího řetězce.
## Odpovídání na otázky v rámci vašich dat
LlamaIndex používá dvoustupňovou metodu při použití LLM s vašimi daty:
1. **indexační fáze**: příprava znalostní báze a
2. **dotazovací fáze**: získání relevantního kontextu z informací, které pomohou LLM odpovědět na otázku
![](./_static/concepts/rag.jpg)
Tento proces je také známý jako Retrieval Augmented Generation (RAG).
LlamaIndex.TS poskytuje základní nástroje, které vám usnadní oba kroky.
Pojďme si každou fázi prozkoumat podrobněji.
### Indexační fáze
LlamaIndex.TS vám pomáhá připravit znalostní bázi pomocí sady konektorů a indexů dat.
![](./_static/concepts/indexing.jpg)
[**Datoví načítadla**](./modules/high_level/data_loader.md):
Datový konektor (tzv. `Reader`) načítá data z různých zdrojů dat a formátů do jednoduché reprezentace `Document` (text a jednoduchá metadata).
[**Dokumenty / Uzly**](./modules/high_level/documents_and_nodes.md): `Document` je obecný kontejner pro jakýkoli zdroj dat - například PDF, výstup z API nebo načtená data z databáze. `Node` je atomická jednotka dat v LlamaIndex a představuje "část" zdrojového `Document`. Jedná se o bohatou reprezentaci, která zahrnuje metadata a vztahy (k ostatním uzlům), aby umožnila přesné a výstižné operace získávání.
[**Indexy dat**](./modules/high_level/data_index.md):
Jakmile jste načetli svá data, LlamaIndex vám pomáhá indexovat data do formátu, který je snadno získatelný.
Pod pokličkou LlamaIndex analyzuje nezpracované dokumenty do mezireprezentací, vypočítá vektorová vnoření a ukládá vaše data do paměti nebo na disk.
"
### Dotazovací fáze
V dotazovací fázi dotazovací řetězec získává nejrelevantnější kontext na základě uživatelského dotazu
a předává ho LLM (spolu s dotazem) k syntéze odpovědi.
Tímto způsobem LLM získává aktuální znalosti, které nejsou obsaženy v jeho původních trénovacích datech,
(což také snižuje halucinace).
Klíčovou výzvou v dotazovací fázi je získávání, orchestrace a dedukce z (potenciálně mnoha) znalostních bází.
LlamaIndex poskytuje komponovatelné moduly, které vám pomáhají sestavit a integrovat RAG řetězce pro Q&A (dotazovací engine), chatbot (chatovací engine) nebo jako součást agenta.
Tyto stavební bloky lze přizpůsobit tak, aby odrážely preference ohodnocování a byly sestaveny tak, aby dedukovaly z více znalostních bází strukturovaným způsobem.
![](./_static/concepts/querying.jpg)
#### Stavební bloky
[**Retrievery**](./modules/low_level/retriever.md):
Retriever definuje, jak efektivně získat relevantní kontext z znalostní báze (tj. indexu) na základě dotazu.
Konkrétní logika získávání se liší pro různé indexy, nejpopulárnější je husté získávání pomocí vektorového indexu.
[**Syntetizátory odpovědí**](./modules/low_level/response_synthesizer.md):
Syntetizátor odpovědí generuje odpověď z LLM pomocí uživatelského dotazu a daného souboru získaných textových částí.
"
#### Řetězce
[**Dotazovací enginy**](./modules/high_level/query_engine.md):
Dotazovací engine je koncový řetězec, který vám umožňuje klást otázky nad vašimi daty.
Přijímá dotaz v přirozeném jazyce a vrací odpověď spolu s referenčním kontextem získaným a předaným LLM.
[**Chatovací enginy**](./modules/high_level/chat_engine.md):
Chatovací engine je koncový řetězec pro konverzaci s vašimi daty
(více vzájemných otázek a odpovědí namísto jedné otázky a odpovědi).
"
@@ -1,59 +0,0 @@
---
sidebar_position: 4
---
# Příklady od začátku do konce
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
V repozitáři jsou k dispozici několik příkladů od začátku do konce, které používají LlamaIndex.TS.
Podívejte se na následující příklady nebo je vyzkoušejte a dokončete je během několika minut s interaktivními tutoriály na Github Codespace poskytovanými Dev-Docs [zde](https://codespaces.new/team-dev-docs/lits-dev-docs-playground?devcontainer_path=.devcontainer%2Fjavascript_ltsquickstart%2Fdevcontainer.json):
## [Chatovací engine](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/chatEngine.ts)
Načtěte soubor a diskutujte o něm s LLM.
## [Vektorový index](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndex.ts)
Vytvořte vektorový index a vyhledejte v něm. Vektorový index používá vnoření pro získání nejrelevantnějších uzlů. Výchozí hodnota pro nejrelevantnější uzly je 2.
"
## [Index shrnutí](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/summaryIndex.ts)
Vytvořte seznamový index a vyhledejte v něm. Tento příklad také používá `LLMRetriever`, který používá LLM k výběru nejlepších uzlů pro generování odpovědi.
"
## [Uložení / Načtení indexu](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/storageContext.ts)
Vytvoření a načtení vektorového indexu. Ukládání na disk v LlamaIndex.TS se provádí automaticky poté, co je vytvořen objekt kontextu úložiště.
"
## [Přizpůsobený vektorový index](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/vectorIndexCustomize.ts)
Vytvořte vektorový index a dotazujte se na něj, přičemž také konfigurujte `LLM`, `ServiceContext` a `similarity_top_k`.
## [OpenAI LLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/openai.ts)
Vytvořte OpenAI LLM a použijte ho přímo pro chatování.
"
## [Llama2 DeuceLLM](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/llamadeuce.ts)
Vytvořte Llama-2 LLM a použijte jej přímo pro chatování.
"
## [SubQuestionQueryEngine](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts)
Používá `SubQuestionQueryEngine`, který rozděluje složité dotazy na více poddotazů a poté agreguje odpověď na všechny poddotazy.
"
## [Moduly nízké úrovně](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/lowlevel.ts)
Tento příklad používá několik modulů nízké úrovně, což odstraňuje potřebu skutečného dotazovacího enginu. Tyto moduly lze použít kdekoli, v jakékoliv aplikaci, nebo je lze upravit a podřadit, aby vyhovovaly vašim vlastním potřebám.
@@ -1,17 +0,0 @@
---
sidebar_position: 5
---
# Prostředí
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
LlamaIndex aktuálně oficiálně podporuje NodeJS 18 a NodeJS 20.
## NextJS App Router
Pokud používáte NextJS App Router pro zpracování tras/route a serverless funkce, budete muset použít režim NodeJS:
```js
export const runtime = "nodejs"; // výchozí hodnota
```
@@ -1,65 +0,0 @@
---
sidebar_position: 1
---
# Instalace a nastavení
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
Ujistěte se, že máte nainstalovaný NodeJS ve verzi 18 nebo vyšší.
## Použití create-llama
Nejjednodušší způsob, jak začít s LlamaIndexem, je použití `create-llama`. Tento nástroj příkazového řádku vám umožní rychle začít s vytvářením nové aplikace LlamaIndex s přednastaveným prostředím.
Jen spusťte
<Tabs>
<TabItem value="1" label="npm" default>
```bash
npx create-llama@latest
```
</TabItem>
<TabItem value="2" label="Yarn">
```bash
yarn create llama
```
</TabItem>
<TabItem value="3" label="pnpm">
```bash
pnpm create llama@latest
```
</TabItem>
</Tabs>
abyste začali. Jakmile je vaše aplikace vygenerována, spusťte
```bash npm2yarn
npm run dev
```
pro spuštění vývojového serveru. Poté můžete navštívit [http://localhost:3000](http://localhost:3000), abyste viděli vaši aplikaci.
## Instalace pomocí NPM
```bash npm2yarn
npm install llamaindex
```
### Proměnné prostředí
Naše příklady výchozí používají OpenAI. Budete potřebovat nastavit svůj Open AI klíč následovně:
```bash
export OPENAI_API_KEY="sk-......" # Nahraďte svým klíčem z https://platform.openai.com/account/api-keys
```
Pokud chcete, aby se klíč automaticky načítal pokaždé, přidejte ho do souboru .zshrc/.bashrc.
VAROVÁNÍ: Neukládejte svůj OpenAI klíč do verzovacího systému.
@@ -1,60 +0,0 @@
---
sidebar_position: 0
slug: /
---
# Co je LlamaIndex.TS?
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
LlamaIndex.TS je datový framework pro aplikace LLM, který slouží k příjmu, strukturování a přístupu k soukromým nebo doménově specifickým datům. Zatímco je také k dispozici python balíček (viz [zde](https://docs.llamaindex.ai/en/stable/)), LlamaIndex.TS nabízí základní funkce v jednoduchém balíčku, optimalizovaném pro použití s TypeScriptem.
## 🚀 Proč LlamaIndex.TS?
V jádru LLMs nabízejí přirozené jazykové rozhraní mezi lidmi a odvozenými daty. Široce dostupné modely jsou předtrénované na obrovském množství veřejně dostupných dat, od Wikipedie a mailingových seznamů po učebnice a zdrojový kód.
Aplikace postavené na LLMs často vyžadují rozšíření těchto modelů o soukromá nebo doménově specifická data. Bohužel, tato data mohou být rozptýlena mezi izolovanými aplikacemi a úložišti dat. Jsou za API, v SQL databázích nebo uvězněna v PDF a prezentacích.
A právě zde přichází **LlamaIndex.TS**.
## 🦙 Jak může LlamaIndex.TS pomoci?
LlamaIndex.TS poskytuje následující nástroje:
- **Načítání dat** - příjem vašich existujících dat ve formátech `.txt`, `.pdf`, `.csv`, `.md` a `.docx` přímo
- **Indexy dat** - strukturování vašich dat do prostředních reprezentací, které jsou snadné a výkonné pro použití s LLM.
- **Engine** poskytují přirozený přístup k vašim datům. Například:
- Dotazovací enginy jsou výkonná rozhraní pro získávání znalostmi rozšířeného výstupu.
- Chat enginy jsou konverzační rozhraní pro interakce s vašimi daty ve více zprávách, "zpětně a vpřed".
## 👨‍👩‍👧‍👦 Pro koho je LlamaIndex určen?
LlamaIndex.TS poskytuje základní sadu nástrojů, které jsou nezbytné pro všechny, kteří staví LLM aplikace s použitím JavaScriptu a TypeScriptu.
Naše API na vyšší úrovni umožňuje začátečníkům používat LlamaIndex.TS k příjmu a dotazování dat.
Pro složitější aplikace naše API na nižší úrovni umožňuje pokročilým uživatelům upravit a rozšířit libovolný modul - konektory dat, indexy, získávače a dotazovací enginy, aby vyhovoval jejich potřebám.
## Začínáme
`npm install llamaindex`
Naše dokumentace obsahuje [Návod k instalaci](./installation.mdx) a [Úvodní tutoriál](./starter.md) pro vytvoření vaší první aplikace.
Jakmile jste připraveni, [Vysokoúrovňové koncepty](./getting_started/concepts.md) poskytují přehled o modulární architektuře LlamaIndexu. Pro více praktických příkladů se podívejte na naše [Tutoriály od začátku do konce](./end_to_end.md).
## 🗺️ Ekosystém
Pro stažení nebo přispění najdete LlamaIndex na:
- Github: https://github.com/run-llama/LlamaIndexTS
- NPM: https://www.npmjs.com/package/llamaindex
"
## Komunita
Potřebujete pomoc? Máte návrh na novou funkci? Připojte se do komunity LlamaIndex:
- Twitter: https://twitter.com/llama_index
- Discord: https://discord.gg/dGcwcsnxhU
@@ -1,22 +0,0 @@
---
sidebar_position: 4
---
# ChatEngine (聊天引擎)
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
ChatEngine je rychlý a jednoduchý způsob, jak chatovat s daty ve vašem indexu.
```typescript
const retriever = index.asRetriever();
const chatEngine = new ContextChatEngine({ retriever });
// začněte chatovat
const response = await chatEngine.chat(query);
```
## Api Reference (Odkazy na API)
- [ContextChatEngine (Kontextový chatovací engine)](../../api/classes/ContextChatEngine.md)
- [CondenseQuestionChatEngine (Kondenzovaný chatovací engine)](../../api/classes/ContextChatEngine.md)
@@ -1,27 +0,0 @@
---
sidebar_position: 2
---
# Index (Index)
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
Index je základním kontejnerem a organizací vašich dat. LlamaIndex.TS podporuje dva indexy:
- `VectorStoreIndex` - při generování odpovědi odešle nejlepších k `Node` do LLM. Výchozí hodnota pro nejlepších k je 2.
- `SummaryIndex` - při generování odpovědi odešle každý `Node` v indexu do LLM.
```typescript
import { Document, VectorStoreIndex } from "llamaindex";
const document = new Document({ text: "test" });
const index = await VectorStoreIndex.fromDocuments([document]);
```
## API Reference (API Reference)
- [SummaryIndex](../../api/classes/SummaryIndex.md)
- [VectorStoreIndex](../../api/classes/VectorStoreIndex.md)
"
@@ -1,21 +0,0 @@
---
sidebar_position: 1
---
# Čtenář / Načítání
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
LlamaIndex.TS podporuje snadné načítání souborů z adresářů pomocí třídy `SimpleDirectoryReader`. V současné době jsou podporovány soubory `.txt`, `.pdf`, `.csv`, `.md` a `.docx`, s plánem na podporu dalších typů souborů v budoucnosti!
```typescript
import { SimpleDirectoryReader } from "llamaindex";
documents = new SimpleDirectoryReader().loadData("./data");
```
## API Reference
- [SimpleDirectoryReader](../../api/classes/SimpleDirectoryReader.md)
"
@@ -1,22 +0,0 @@
---
sidebar_position: 0
---
# Dokumenty a uzly
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
`Dokumenty` a `Uzly` jsou základní stavební kameny každého indexu. Zatímco API pro tyto objekty je podobné, objekty `Dokument` představují celé soubory, zatímco `Uzly` jsou menší části tohoto původního dokumentu, které jsou vhodné pro LLM a Q&A.
```typescript
import { Document } from "llamaindex";
document = new Document({ text: "text", metadata: { key: "val" } });
```
## API Reference
- [Dokument](../../api/classes/Document.md)
- [TextNode](../../api/classes/TextNode.md)
"
@@ -1,40 +0,0 @@
---
sidebar_position: 3
---
# QueryEngine (Dotazovací engine)
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
Dotazovací engine obaluje `Retriever` a `ResponseSynthesizer` do potrubí, které použije řetězec dotazu k získání uzlů a poté je odešle do LLM pro generování odpovědi.
```typescript
const queryEngine = index.asQueryEngine();
const response = await queryEngine.query("řetězec dotazu");
```
## Dotazovací engine pro poddotazy
Základní koncept Dotazovacího engine pro poddotazy spočívá v rozdělení jednoho dotazu na více dotazů, získání odpovědi na každý z těchto dotazů a následné kombinaci těchto různých odpovědí do jedné soudržné odpovědi pro uživatele. Můžete si to představit jako techniku "promyslete to krok za krokem", ale s iterací přes zdroje dat!
### Začínáme
Nejjednodušší způsob, jak začít vyzkoušet Dotazovací engine pro poddotazy, je spustit soubor subquestion.ts v adresáři [examples](https://github.com/run-llama/LlamaIndexTS/blob/main/examples/subquestion.ts).
```bash
npx ts-node subquestion.ts
```
"
### Nástroje
Dotazovací engine pro poddotazy je implementován pomocí nástrojů (Tools). Základní myšlenkou nástrojů je, že jsou to proveditelné možnosti pro velký jazykový model. V tomto případě se náš Dotazovací engine pro poddotazy spoléhá na nástroj QueryEngineTool, který, jak jste si již domysleli, je nástrojem pro spouštění dotazů na Dotazovací engine. To nám umožňuje modelu nabídnout možnost dotazovat se na různé dokumenty pro různé otázky například. Můžete si také představit, že Dotazovací engine pro poddotazy může použít nástroj, který vyhledává něco na webu nebo získává odpověď pomocí Wolfram Alpha.
Více informací o nástrojích najdete v dokumentaci k LlamaIndex Python na adrese https://gpt-index.readthedocs.io/en/latest/core_modules/agent_modules/tools/root.html
## API Reference (Odkazy na rozhraní API)
- [RetrieverQueryEngine (Dotazovací engine pro získávání)](../../api/classes/RetrieverQueryEngine.md)
- [SubQuestionQueryEngine (Dotazovací engine pro poddotazy)](../../api/classes/SubQuestionQueryEngine.md)
- [QueryEngineTool (Nástroj pro dotazovací engine)](../../api/interfaces/QueryEngineTool.md)
@@ -1,33 +0,0 @@
# Hlavní moduly
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
LlamaIndex.TS nabízí několik hlavních modulů, které jsou rozděleny na vysoce úrovňové moduly pro rychlý start a nízkoúrovňové moduly pro přizpůsobení klíčových komponent podle vašich potřeb.
## Moduly vyšší úrovně
- [**Dokument**](./high_level/documents_and_nodes.md): Dokument představuje textový soubor, PDF soubor nebo jiný souvislý datový blok.
- [**Uzel**](./high_level/documents_and_nodes.md): Základní stavební blok dat. Nejčastěji se jedná o části dokumentu rozdělené do spravovatelných kusů, které jsou dostatečně malé na to, aby mohly být vloženy do modelu a LLM.
- [**Čtečka/Načítání**](./high_level/data_loader.md): Čtečka nebo načítání je něco, co přijímá dokument ve skutečném světě a přeměňuje ho na třídu Dokument, kterou lze poté použít ve vašem indexu a dotazech. V současné době podporujeme soubory s čistým textem a PDF soubory a mnoho dalších bude následovat.
- [**Indexy**](./high_level/data_index.md): Indexy ukládají uzly a vektory těchto uzlů.
- [**Dotazovací engine**](./high_level/query_engine.md): Dotazovací enginy generují dotaz, který zadáte, a vracejí vám výsledek. Dotazovací enginy obvykle kombinují předem vytvořený prompt s vybranými uzly z vašeho indexu, aby poskytly LLM kontext, který potřebuje k odpovědi na váš dotaz.
- [**Chatovací engine**](./high_level/chat_engine.md): Chatovací engine vám pomáhá vytvořit chatbota, který bude interagovat s vašimi indexy.
## Nízkoúrovňový modul
- [**LLM**](./low_level/llm.md): Třída LLM je sjednocené rozhraní nad velkým poskytovatelem jazykového modelu, jako je OpenAI GPT-4, Anthropic Claude nebo Meta LLaMA. Můžete ji podřídit, abyste vytvořili konektor pro vlastní velký jazykový model.
- [**Embedding**](./low_level/embedding.md): Embedding je reprezentován jako vektor s plovoucími čísly. Výchozím modelem pro embedding je OpenAI text-embedding-ada-002 a každý vygenerovaný embedding se skládá z 1 536 plovoucích čísel. Dalším populárním modelem embeddingu je BERT, který používá 768 plovoucích čísel k reprezentaci každého uzlu. Poskytujeme několik nástrojů pro práci s embeddiny, včetně 3 možností výpočtu podobnosti a Maximum Marginal Relevance.
- [**TextSplitter/NodeParser**](./low_level/node_parser.md): Strategie rozdělování textu jsou nesmírně důležité pro celkovou účinnost vyhledávání v embeddinzích. V současné době nemáme žádné univerzální řešení. V závislosti na zdrojových dokumentech můžete chtít použít různé velikosti a strategie rozdělování. V současné době podporujeme rozdělování podle pevné velikosti, rozdělování podle pevné velikosti s překrývajícími se částmi, rozdělování podle věty a rozdělování podle odstavce. Textový splitter je používán NodeParserem při rozdělování `Dokumentů` na `Uzly`.
- [**Retriever**](./low_level/retriever.md): Retriever je ten, který skutečně vybírá uzly, které mají být získány z indexu. Zde můžete zkusit získat více nebo méně uzlů na dotaz, změnit funkci podobnosti nebo vytvořit vlastní retriever pro každý jednotlivý případ použití ve vaší aplikaci. Například můžete mít samostatného retrievera pro obsah kódu a textový obsah.
- [**ResponseSynthesizer**](./low_level/response_synthesizer.md): ResponseSynthesizer je zodpovědný za přijetí řetězce dotazu a použití seznamu `Uzly` k vygenerování odpovědi. To může mít různé formy, například procházení všech kontextů a zpřesňování odpovědi nebo vytváření stromu shrnutí a vrácení kořenového shrnutí.
- [**Storage**](./low_level/storage.md): V nějakém okamžiku budete chtít uložit své indexy, data a vektory místo opakovaného spouštění modelů embeddingu pokaždé. IndexStore, DocStore, VectorStore a KVStore jsou abstrakce, které vám to umožňují. Společně tvoří StorageContext. V současné době vám umožňujeme ukládat vaše embeddiny do souborů na souborovém systému (nebo do virtuálního paměťového souborového systému), ale aktivně také přidáváme integrace do Vector Databází.
@@ -1,26 +0,0 @@
---
sidebar_position: 1
---
# Vkládání
`Tato dokumentace byla automaticky přeložena a může obsahovat chyby. Neváhejte otevřít Pull Request pro navrhování změn.`
Model vkládání v LlamaIndexu je zodpovědný za vytváření číselných reprezentací textu. Ve výchozím nastavení LlamaIndex používá model `text-embedding-ada-002` od OpenAI.
Toto lze explicitně nastavit v objektu `ServiceContext`.
```typescript
import { OpenAIEmbedding, serviceContextFromDefaults } from "llamaindex";
const openaiEmbeds = new OpenAIEmbedding();
const serviceContext = serviceContextFromDefaults({ embedModel: openaiEmbeds });
```
## API Reference
- [OpenAIEmbedding](../../api/classes/OpenAIEmbedding.md)
- [ServiceContext](../../api/interfaces/ServiceContext.md)
"

Some files were not shown because too many files have changed in this diff Show More