Last active
November 8, 2023 16:38
-
-
Save thoraxe/14d34e2aa85f602f7af89813a13ce010 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Indexing summary documents... | |
Parsing documents into nodes: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:00<00:00, 3778.65it/s] | |
Generating embeddings: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:00<00:00, 22.28it/s] | |
Indexing product documents... | |
Parsing documents into nodes: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 533/533 [00:00<00:00, 1216.73it/s] | |
Generating embeddings: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 731/731 [00:07<00:00, 95.32it/s] | |
Traceback (most recent call last): | |
File "/home/thoraxe/.pyenv/versions/3.9.16/lib/python3.9/runpy.py", line 197, in _run_module_as_main | |
return _run_code(code, main_globals, None, | |
File "/home/thoraxe/.pyenv/versions/3.9.16/lib/python3.9/runpy.py", line 87, in _run_code | |
exec(code, run_globals) | |
File "/home/thoraxe/Red_Hat/openshift/llamaindex-experiments/fastapi-lightspeed-service/tools/indexer.py", line 39, in <module> | |
product_index = VectorStoreIndex.from_documents(product_documents, storage_context=storage_context, service_context=service_context, show_progress=True) | |
File "/home/thoraxe/.pyenv/versions/fastapi-ols-39/lib/python3.9/site-packages/llama_index/indices/base.py", line 102, in from_documents | |
return cls( | |
File "/home/thoraxe/.pyenv/versions/fastapi-ols-39/lib/python3.9/site-packages/llama_index/indices/vector_store/base.py", line 49, in __init__ | |
super().__init__( | |
File "/home/thoraxe/.pyenv/versions/fastapi-ols-39/lib/python3.9/site-packages/llama_index/indices/base.py", line 71, in __init__ | |
index_struct = self.build_index_from_nodes(nodes) | |
File "/home/thoraxe/.pyenv/versions/fastapi-ols-39/lib/python3.9/site-packages/llama_index/indices/vector_store/base.py", line 254, in build_index_from_nodes | |
return self._build_index_from_nodes(nodes, **insert_kwargs) | |
File "/home/thoraxe/.pyenv/versions/fastapi-ols-39/lib/python3.9/site-packages/llama_index/indices/vector_store/base.py", line 235, in _build_index_from_nodes | |
self._add_nodes_to_index( | |
File "/home/thoraxe/.pyenv/versions/fastapi-ols-39/lib/python3.9/site-packages/llama_index/indices/vector_store/base.py", line 188, in _add_nodes_to_index | |
nodes = self._get_node_with_embedding(nodes, show_progress) | |
File "/home/thoraxe/.pyenv/versions/fastapi-ols-39/lib/python3.9/site-packages/llama_index/indices/vector_store/base.py", line 106, in _get_node_with_embedding | |
embedding = id_to_embed_map[node.node_id] | |
KeyError: '5ad36ef2-49f4-4ce9-ba76-0c4ffc9ec953' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Imports | |
import llama_index | |
from llama_index import VectorStoreIndex, SimpleDirectoryReader | |
from llama_index.storage.storage_context import StorageContext | |
from modules.model_context import get_watsonx_context | |
import logging, sys, os | |
#logging.basicConfig(stream=sys.stdout, level=logging.INFO) | |
#logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout)) | |
llama_index.set_global_handler("simple") | |
# Select Model | |
## check if we are using remote embeddings via env | |
tei_embedding_url = os.getenv("TEI_SERVER_URL", None) | |
if tei_embedding_url != None: | |
service_context = get_watsonx_context(model="ibm/granite-13b-chat-v1", | |
tei_embedding_model='BAAI/bge-base-en-v1.5', | |
url=tei_embedding_url) | |
else: | |
service_context = get_watsonx_context(model="ibm/granite-13b-chat-v1") | |
# Load data | |
filename_fn = lambda filename: {'file_name': filename} | |
storage_context = StorageContext.from_defaults() | |
# index the summary documents | |
print("Indexing summary documents...") | |
summary_documents = SimpleDirectoryReader('data/summary-docs', file_metadata=filename_fn).load_data() | |
summary_index = VectorStoreIndex.from_documents(summary_documents, storage_context=storage_context, service_context=service_context, show_progress=True) | |
summary_index.set_index_id("summary") | |
storage_context.persist(persist_dir="./vector-db/summary-docs") | |
# index the product documentation | |
print("Indexing product documents...") | |
product_documents = SimpleDirectoryReader('data/ocp-product-docs-md', file_metadata=filename_fn).load_data() | |
product_index = VectorStoreIndex.from_documents(product_documents, storage_context=storage_context, service_context=service_context, show_progress=True) | |
product_index.set_index_id("product") | |
storage_context.persist(persist_dir="./vector-db/ocp-product-docs") | |
print("Done indexing!") | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
from ibm_watson_machine_learning.metanames import GenTextParamsMetaNames as GenParams | |
from llama_index.llms import LangChainLLM | |
from llama_index.embeddings import TextEmbeddingsInference | |
from llama_index import ServiceContext | |
from genai.extensions.langchain import LangChainInterface | |
from genai.schemas import GenerateParams | |
from genai.credentials import Credentials | |
def get_watsonx_predictor(model, min_new_tokens=1, max_new_tokens=256, **kwargs): | |
if "verbose" in kwargs: | |
verbose = kwargs["verbose"] | |
else: | |
verbose = False | |
api_key = os.getenv("BAM_API_KEY", None) | |
api_url = os.getenv("BAM_URL", None) | |
creds = Credentials(api_key, api_endpoint=api_url) | |
params = { | |
GenParams.DECODING_METHOD: "greedy", | |
GenParams.MIN_NEW_TOKENS: min_new_tokens, | |
GenParams.MAX_NEW_TOKENS: max_new_tokens, | |
} | |
predictor = LangChainInterface( | |
model=model, params=params, credentials=creds, verbose=verbose | |
) | |
return predictor | |
def get_watsonx_context(model, url='local', tei_embedding_model = None, **kwargs): | |
if url != 'local': | |
# MUST set tei_embedding_model to do this | |
# TODO: make this appropriately blow up | |
embed_model = TextEmbeddingsInference( | |
model_name=tei_embedding_model, | |
base_url=url, | |
) | |
else: | |
embed_model = "local:BAAI/bge-base-en" | |
predictor = get_watsonx_predictor(model) | |
service_context = ServiceContext.from_defaults( | |
chunk_size=1024, llm=predictor, embed_model=embed_model, **kwargs | |
) | |
return service_context |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment