parent
d094381e5d
commit
ad301e6ed7
@ -0,0 +1 @@ |
||||
storage/ |
@ -0,0 +1,49 @@ |
||||
# Data query example |
||||
|
||||
This example makes use of [Llama-Index](https://gpt-index.readthedocs.io/en/stable/getting_started/installation.html) to enable question answering on a set of documents. |
||||
|
||||
It loosely follows [the quickstart](https://gpt-index.readthedocs.io/en/stable/guides/primer/usage_pattern.html). |
||||
|
||||
## Requirements |
||||
|
||||
For this in order to work, you will need a model compatible with the `llama.cpp` backend. This is will not work with gpt4all. |
||||
|
||||
The example uses `WizardLM`. Edit the config files in `models/` accordingly to specify the model you use (change `HERE`). |
||||
|
||||
You will also need a training data set. Copy that over `data`. |
||||
|
||||
## Setup |
||||
|
||||
Start the API: |
||||
|
||||
```bash |
||||
# Clone LocalAI |
||||
git clone https://github.com/go-skynet/LocalAI |
||||
|
||||
cd LocalAI/examples/query_data |
||||
|
||||
# Copy your models, edit config files accordingly |
||||
|
||||
# start with docker-compose |
||||
docker-compose up -d --build |
||||
``` |
||||
|
||||
### Create a storage: |
||||
|
||||
```bash |
||||
export OPENAI_API_BASE=http://localhost:8080/v1 |
||||
export OPENAI_API_KEY=sk- |
||||
|
||||
python store.py |
||||
``` |
||||
|
||||
After it finishes, a directory "storage" will be created with the vector index database. |
||||
|
||||
## Query |
||||
|
||||
```bash |
||||
export OPENAI_API_BASE=http://localhost:8080/v1 |
||||
export OPENAI_API_KEY=sk- |
||||
|
||||
python query.py |
||||
``` |
@ -0,0 +1,15 @@ |
||||
version: '3.6' |
||||
|
||||
services: |
||||
api: |
||||
image: quay.io/go-skynet/local-ai:latest |
||||
build: |
||||
context: . |
||||
dockerfile: Dockerfile |
||||
ports: |
||||
- 8080:8080 |
||||
env_file: |
||||
- .env |
||||
volumes: |
||||
- ./models:/models:cached |
||||
command: ["/usr/bin/local-ai"] |
@ -0,0 +1 @@ |
||||
{{.Input}} |
@ -0,0 +1,18 @@ |
||||
name: text-embedding-ada-002 |
||||
parameters: |
||||
model: HERE |
||||
top_k: 80 |
||||
temperature: 0.2 |
||||
top_p: 0.7 |
||||
context_size: 1024 |
||||
threads: 14 |
||||
stopwords: |
||||
- "HUMAN:" |
||||
- "GPT:" |
||||
roles: |
||||
user: " " |
||||
system: " " |
||||
embeddings: true |
||||
template: |
||||
completion: completion |
||||
chat: gpt4all |
@ -0,0 +1,18 @@ |
||||
name: gpt-3.5-turbo |
||||
parameters: |
||||
model: HERE |
||||
top_k: 80 |
||||
temperature: 0.2 |
||||
top_p: 0.7 |
||||
context_size: 1024 |
||||
threads: 14 |
||||
embeddings: true |
||||
stopwords: |
||||
- "HUMAN:" |
||||
- "GPT:" |
||||
roles: |
||||
user: " " |
||||
system: " " |
||||
template: |
||||
completion: completion |
||||
chat: wizardlm |
@ -0,0 +1,3 @@ |
||||
{{.Input}} |
||||
|
||||
### Response: |
@ -0,0 +1,32 @@ |
||||
import os |
||||
|
||||
# Uncomment to specify your OpenAI API key here (local testing only, not in production!), or add corresponding environment variable (recommended) |
||||
# os.environ['OPENAI_API_KEY']= "" |
||||
|
||||
from llama_index import LLMPredictor, PromptHelper, ServiceContext |
||||
from langchain.llms.openai import OpenAI |
||||
from llama_index import StorageContext, load_index_from_storage |
||||
|
||||
|
||||
# This example uses text-davinci-003 by default; feel free to change if desired |
||||
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="gpt-3.5-turbo",openai_api_base="http://localhost:8080/v1")) |
||||
|
||||
# Configure prompt parameters and initialise helper |
||||
max_input_size = 1024 |
||||
num_output = 256 |
||||
max_chunk_overlap = 20 |
||||
|
||||
prompt_helper = PromptHelper(max_input_size, num_output, max_chunk_overlap) |
||||
|
||||
# Load documents from the 'data' directory |
||||
service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper) |
||||
|
||||
# rebuild storage context |
||||
storage_context = StorageContext.from_defaults(persist_dir='./storage') |
||||
|
||||
# load index |
||||
index = load_index_from_storage(storage_context, service_context=service_context, ) |
||||
|
||||
query_engine = index.as_query_engine() |
||||
response = query_engine.query("XXXXXX your question here XXXXX") |
||||
print(response) |
@ -0,0 +1,25 @@ |
||||
import os |
||||
|
||||
# Uncomment to specify your OpenAI API key here (local testing only, not in production!), or add corresponding environment variable (recommended) |
||||
# os.environ['OPENAI_API_KEY']= "" |
||||
|
||||
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader, LLMPredictor, PromptHelper, ServiceContext |
||||
from langchain.llms.openai import OpenAI |
||||
from llama_index import StorageContext, load_index_from_storage |
||||
|
||||
# This example uses text-davinci-003 by default; feel free to change if desired |
||||
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0, model_name="gpt-3.5-turbo",openai_api_base="http://localhost:8080/v1")) |
||||
|
||||
# Configure prompt parameters and initialise helper |
||||
max_input_size = 256 |
||||
num_output = 256 |
||||
max_chunk_overlap = 10 |
||||
|
||||
prompt_helper = PromptHelper(max_input_size, num_output, max_chunk_overlap) |
||||
|
||||
# Load documents from the 'data' directory |
||||
documents = SimpleDirectoryReader('data').load_data() |
||||
service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper, chunk_size_limit = 257) |
||||
index = GPTVectorStoreIndex.from_documents(documents, service_context=service_context) |
||||
index.storage_context.persist(persist_dir="./storage") |
||||
|
Loading…
Reference in new issue