LLM
Using Oracle Vector Search to find Similar Wines – Part 2
Vector Search can be powerful way to perform Similarity Search in bodies of text. In Part 1 of this series, we walked through the steps for getting everything setup to perform Vector Search. We are using a Wine dataset with the aim of using a locally grown and produced Irish wine to find similar wines. In the Part 1 we loaded the dataset, imported the ONNX Model and were able to run some basis queries or similarity searches using some general text and to produce Vectors. In this post we will move onto generating Vector embeddings, look are some different scenarios around what data and text to include/exclude and how these can be easily added to tables containing our data.
Step 2-1: Adding a column to store the Vector data
We will need to add a new column to our Wine Reviews table to store Vector Embeddings. There is a VECTOR data type for storing this kind of data.
alter table winereviews add (wine_vec vector);
Step 2-2: Creating Vectors and Updating our Data
To generate the Vector Embeddings we can use the ONNX model we imported into the database. See my previous post for more on this. A simple SQL UPDATE command can create the Vector and add this data to our WINEREVIEWS table.
UPDATE winereviews set wine_vec = vector_embedding(all_minilm_l12_v2 using description as data);
This took about 40 minutes to complete on my laptop running the Database in a Docker container. This might seem like a long time but most of that time is taken up the OS extending files, as there weren’t created to process this kind of workload. In a real world database this wouldn’t be an issue and would be completed significantly quicker.
If you don’t want to wait around for this command to run, you can IMPORT the already updated dataset including the Vector data using the following file and commands. The first thing you need to do is to create another table called WINEREVIEWS_VEC.
drop table if exists winereviews_vec;CREATE TABLE WINEREVIEWS_VEC ( "ID" NUMBER(38,0), "COUNTRY" VARCHAR2(300), "DESCRIPTION" VARCHAR2(3000), "DESIGNATION" VARCHAR2(2000), "POINTS" NUMBER(38,0), "PRICE" VARCHAR2(50), "PROVINCE" VARCHAR2(100), "REGION_1" VARCHAR2(200), "REGION_2" VARCHAR2(100), "TASTER_NAME" VARCHAR2(200), "TASTER_TWITTER_HANDLE" VARCHAR2(200), "TITLE" VARCHAR2(2000), "VARIETY" VARCHAR2(300), "WINERY" VARCHAR2(300), "WINE_VEC" VECTOR);
Download this file to your computer. It contains the original Wine Reviews data in addition to the Vector data. This data file can be imported using SQL Command Line ‘load’ function. Using SQL Command Line (SQLcl) log into the schema you are using, and run the following at the SQL prompt.
-- The following LOAD command takes approx. 15seconds to load the datasetload winereviews_vec WINEREVIEWS_DATA_TABLE_vec.csv
We can examine the newly imported data by
-- Let's examine the dataselect count(*) from winereviews_vec;select * from winereviews_vec where rownum=1;
Step 2-3: Let’s explore our Vector Data – Vector Search
We can now explore the Wine Vectors with some specific wine descriptions. For example, we are looking for wines that have a description that are similar to ‘light, crisp, summer wine with little fruit and good citrus’. We need to define a session variable to hold this description and then query the data.
variable search_text varchar2(100);exec :search_text := 'light, crisp, summer wine with little fruit and good citrus';SELECT vector_distance(wine_vec, (vector_embedding(all_minilm_l12_v2 using :search_text as data))) as distance, title, variety, winery, countryFROM winereviews_vecorder by 1fetch approximate first 5 rows only;

We can fine tune the search to only return wines from France or Italy, by adding to the WHERE clause. For example,
SELECT vector_distance(wine_vec, (vector_embedding(all_minilm_l12_v2 using :search_text as data))) as distance, title, variety, winery, countryFROM winereviews_vecWHERE country = 'Italy'ORDER BY 1 ascfetch approximate first 5 rows only;

We can see from the outcomes from the above two queries the wines from Italy have a weaker match than some of the Wines from France, Portugal and US. We look at the wine descriptions from these wines to see how the description of the wine compares to our original text stored in the session variable. (I’m not including this query here for conciseness, but it is straightforward to write). In the results we don’t necessarily see an exact match with our search text. What we do get is wine descriptions that are similar to our search text. This illustrates how Vector Search can be used for similarity matches.

Step 2-4: What is the Database Query Optimizer doing
There are a few ways to look at how the Database executes the above queries. One of the simplest is to use AUTOTRACE. In SQLcl we can turn it on using,
set autotrace on
Using the last query used in the previous section above when we run it we get the following details. Only particial details is given here. When you examine the trace details you will notice a large number of block reads and a full table scan. The aim is to reduce the number of block reads and we can achieve this in a number of ways from using a larger block size, increasing memory, buffers etc. One additional method is to use indexes and the next section will show how this can be done for Vector data.

Don’t forget to turn off AUTOTRACE when you are finished using it.
set autotrace off
Step 2-5: Creating Vector Indexes
Before we can create vector indexes we might need to allocate some memory resources to it. We can examine this using the command
show parameter vector_memory_size
On the docker container I’m using this returned Zero for the size, which means if I tried to create a vector index it would fail. To allocate memory to Vectors we need to do the following on the docker container.
- connect to the Docker container shell. docker exec -it sh
- cd /opt/oracle/product/26ai/dbhomeFree/bin
- sqlplus / as sysdba
- alter system set vector_memory_size = 500M scope=spfile;
- show parameter vector_memory_size – to verify the exhange
- restart the database
When we reconnect to our schema we can run the show parameter command now to show the change.
SQL> show parameter vector_memory_sizeNAME TYPE VALUE ------------------ ----------- ----- vector_memory_size big integer 512M
Now we can create the index.
create vector index winereviews_vec_idx on winereviews_vec(wine_vec) organization inmemory neighbor graphdistance cosinewith target accuracy 95;
When we re-run the query now we get the following plan. Her we can see the index being used and reduction in the number of buffers used. Roughly a 1,600x reduction.
------------------------------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem | ------------------------------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 5 |00:00:00.01 | 27 | | | | |* 1 | COUNT STOPKEY | | 1 | | 5 |00:00:00.01 | 27 | | | | | 2 | VIEW | | 1 | 5 | 5 |00:00:00.01 | 27 | | | | |* 3 | SORT ORDER BY STOPKEY | | 1 | 5 | 5 |00:00:00.01 | 27 | 2048 | 2048 | 2048 (0)| | 4 | TABLE ACCESS BY INDEX ROWID| WINEREVIEWS_VEC | 1 | 5 | 5 |00:00:00.01 | 27 | | | | | 5 | VECTOR INDEX HNSW SCAN | WINEREVIEWS_VEC_IDX | 1 | 5 | 5 |00:00:00.01 | 22 | | | | ------------------------------------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(ROWNUM<=5) 3 - filter(ROWNUM<=5) Statistics----------------------------------------------------------- 7 CPU used by this session 6 CPU used when call started 6 DB time 2 Requests to/from client 17 enqueue releases 17 enqueue requests 17 non-idle wait count 513 opened cursors cumulative 1 opened cursors current 1674 recursive calls 5 recursive cpu usage 2097 session logical reads 3 user calls
If you run this query again you will see a reduction in the numbers again and this indicates that it is reading the data what was cached from the previous run.
We are now at the point that we can use Vector Search to compare wines to our Luscas Wine, from Ireland, and to find similar wines in the dataset. I’ll explore this, the steps needed and what we discovered in the next post.
Using NotebookLM to help with understanding Oracle Analytics Cloud or any other product
Over the past few months, we’ve seen a plethora of new LLM related products/agents being released. One such one is NotebookLM from Google. The offical description say “NotebookLM is an AI-powered research and note-taking tool from Google Labs that allows users to ground a large language model (like Gemini) in their own documents, such as PDFs, Google Docs, website URLs, or audio, acting as a personal, intelligent research assistant. It facilitates summarizing, analyzing, and querying information within these specific sources to create study guides, outlines, and, notably, “Audio Overviews” (podcast-style summaries)”
Let’s have a look at using NotebookLM to help with answering questions and how it can help with understanding Oracle Analytics Cloud (OAC).
Yes, you’ll need a Google account, and Yes you need to be OK with uploading your documents to NotebookLM. Make sure you are not breaking any laws (IP, GDPR, etc). It’s really easy to create your first notebook. Simply click on ‘Create new notebook’.
When the notebook opens, you can add your documents and webpages to the notebook. These can be documents in PDF, audio, text, etc to the notebook repository. Currently, there seems to be a limit of 50 documents and webpages that can be added.

The main part of the NotebookLM provides a chatbot where you can ask questions, and the NotebookLM will search through the documents and webpages to formulate an answer. In addition to this, there are features that allow you to generate Audio Overview, Video Overview, Mind Map, Reports, Flashcards, Quiz, Infographic, Slide Deck and a Data Table.
Before we look at some of these and what they have created for Oracle Analytics Cloud, there is a small warning. Some of these can take a long time to complete, that is, if they complete. I’ve had to run some of these features multiple times to get them to create. I’ve run all of the features, and the output from these can be seen on the right-hand side of the above image.
It created a 15-slide presentation on Oracle Analytics Cloud and its various features, and a five minute video on migrating OAC.


It also created a Mind-map, and an Infographic.


Calling Custom OCI Gen AI Agent using Python
In a previous post, I demonstrated how to create a custom Generative AI Agent on OCI. This GenAI Agent was built using some of Shakespeare’s works. Using the OCI GenAI Agent interface is an easy way to test the Agent and to see how it behaves. Beyond that, it doesn’t have any use as you’ll need to call it using some other language or tool. The most common of these is using Python.
The code below calls my GenAI Agent, which I’ve called BOCAS (Brendan’s Oracle Chat Agent for Shakespeare).
import oci
from oci import generative_ai_agent_runtime
import json
from colorama import Fore, Back, Style
CONFIG_PROFILE = "DEFAULT"
config = oci.config.from_file('~/.oci/config', CONFIG_PROFILE)
#AI Agent service endpoint
SERVICE_EP = <add your Service Endpoint>
AGENT_EP_ID = <add your GenAI Agent Endpoint>
welcome_msg = "This is Brendan's Oracle Chatbot Agent for Shakespeare. Ask questions about the works of Shakespeare."
def gen_Agent_Client():
#Initiate AI Agent runtime client
genai_agent_runtime_client = generative_ai_agent_runtime.GenerativeAiAgentRuntimeClient(config, service_endpoint=SERVICE_EP, retry_strategy=oci.retry.NoneRetryStrategy())
create_session_details = generative_ai_agent_runtime.models.CreateSessionDetails()
create_session_details.display_name = "Welcome to BOCAS"
create_session_details.idle_timeout_in_seconds = 20
create_session_details.description = welcome_msg
return create_session_details, genai_agent_runtime_client
def Quest_Answer(user_question, create_session_details, genai_agent_runtime_client):
#Create a Chat Session for AI Agent
try:
create_session_response = genai_agent_runtime_client.create_session(create_session_details, AGENT_EP_ID)
except:
create_session_details, genai_agent_runtime_client = gen_Agent_Client()
create_session_response = genai_agent_runtime_client.create_session(create_session_details, AGENT_EP_ID)
#Define Chat details and input message/question
session_details = generative_ai_agent_runtime.models.ChatDetails()
session_details.session_id = create_session_response.data.id
session_details.should_stream = False
session_details.user_message = user_question
#Get AI Agent Respose
session_response = genai_agent_runtime_client.chat(agent_endpoint_id=AGENT_EP_ID, chat_details=session_details)
return session_response
print(Style.BRIGHT + Fore.RED + welcome_msg + Style.RESET_ALL)
ses_details, genai_client = gen_Agent_Client()
while True:
question = input("Enter text (or Enter to quit): ")
if not question:
break
chat_response = Quest_Answer(question, ses_details, genai_client)
print(Style.DIM +'********** Question for BOCAS **********')
print(Style.BRIGHT + Fore.RED + question + Style.RESET_ALL)
print(Style.DIM + '********** Answer from BOCAS **********' + Style.RESET_ALL)
print(Fore.MAGENTA + chat_response.data.message.content.text + Style.RESET_ALL)
print("*** The End - Exiting BOCAS ***")
When the above code is run, it will loop, asking for questions, until no question is added and the ‘Enter’ key is pressed. Here is the output of the BOCAS running for some of the questions I asked in my previous post, along with a few others. These questions are based on the Irish Leaving Certificate English Examination.



Using a Gen AI Agent to answer Leaving Certificate English papers
In a previous post, I walked through the steps needed to create a Gen AI Agent on a data set of documents containing the works of Shakespeare. In this post, I’ll look at how this Gen AI Agent can be used to answer questions from the Irish Leaving Certificate Higher Level English examination papers from the past few years.
For this evaluation, I will start with some basic questions before moving on to questions from the Higher Level English examination from 2022, 2023 and 2024. I’ve pasted the output generated below from chatting with the AI Agent.
The main texts we will examine will be Othello, McBeth and Hamlett. Let’s start with some basic questions about Hamlet.
We can look at the sources used by the AI Agent to generate their answer, by clicking on View citations or Sources retrieved on the right-hand side panel.
Let’s have a look at the 2022 English examination question on Othello. Students typically have the option of answering one out of two questions.


In 2023, the Shakespeare text was McBeth.


In 2024, the Shakespeare text was Hamlet.


We can see from the above questions, that the AI Agent was able to generate possible answers. As a learning and study resource, it can be difficult to determine the correctness of these answers. Currently, there does seem to be evidence that students typically believe what the AI is generating. But the real question is, should they? Why the AI Agent can give a believable answer for students to memorise, but how good are the answers really? How many marks would they get for these answers? What kind of details are missing from these answers?
To help me answer these questions I enlisted the help of some previous Students who took these English examinations, along with two English teachers who teach higher-level English classes. The students all achieved a H1 grade for English. This is the highest grade possible, where a H1 means they achieved between 90-100%. The feedback from the students and teachers was largely positive. One teacher remarked the answers, to some of the questions, were surprisingly good. When asked about what grade or what percentage range these answers would achieve, again the students and teachers were largely in agreement, with a range between 60-75%. The students tended to give slightly higher marks than the teachers. They were then asked about what was missing from these answers, as in what was needed to get more marks. Again the responses from both the students and teachers were similar, with details of higher-level reasoning, understanding of interpersonal themes, irony, imagery, symbolism, etc were missing.
How to Create an Oracle Gen AI Agent
In this post, I’ll walk you through the steps needed to create a Gen AI Agent on Oracle Cloud. We have seen lots of solutions offered by my different providers for Gen AI Agents. This post focuses on just what is available on Oracle Cloud. You can create a Gen AI Agent manually. However, testing and fine-tuning based on various chunking strategies can take some time. With the automated options available on Oracle Cloud, you don’t have to worry about chunking. It handles all the steps automatically for you. This means you need to be careful when using it. Allocate some time for testing to ensure it meets your requirements. The steps below point out some checkboxes. You need to check them to ensure you generate a more complete knowledge base and outcome.
For my example scenario, I’m going to build a Gen AI Agent for some of the works by Shakespeare. I got the text of several plays from the Gutenberg Project website. The process for creating the Gen AI Agent is:
Step-1 Load Files to a Bucket on OCI

Create a bucket called Shakespeare.
Load the files from your computer into the Bucket. These files were obtained from the Gutenberg Project site.

Step-2 Define a Data Source (documents you want to use) & Create a Knowledge Base

Click on Create Knowledge Base and give it a name ‘Shakespeare’.
Check the ‘Enable Hybrid Search’. checkbox. This will enable both lexical and semantic search. [this is Important]
Click on ‘Specify Data Source’
Select the Bucket from the drop-down list (Shakespeare bucket).
Check the ‘Enable multi-modal parsing’ checkbox.
Select the files to use or check the ‘Select all in bucket’
Click Create.

The Knowledge Base will be created. The files in the bucket will be parsed, and structured for search by the AI Agent. This step can take a few minutes as it needs to process all the files. This depends on the number of files to process, their format and the size of the contents in each file.
Step-3 Create Agent

Go back to the main Gen AI menu and select Agent and then Create Agent.

You can enter the following details:
- Name of the Agent
- Some descriptive information
- A Welcome message for people using the Agent
- Select the Knowledge Base from the list.
The checkbox for creating Endpoints should be checked.
Click Create.
A pop-up window will appear asking you to agree to the Llama 3 License. Check this checkbox and click Submit.

After the agent has been created, check the status of the endpoints. These generally take a little longer to create, and you need these before you can test the Agent using the Chatbot.
Step-4 Test using Chatbot

After verifying the endpoints have been created, you can open a Chatbot by clicking on ‘Chat’ from the menu on the left-hand side of the screen.
Select the name of the ‘Agent’ from the drop-down list e.g. Shakespeare-Post.
Select an end-point for the Agent.
After these have been selected you will see the ‘Welcome’ message. This was defined when creating the Agent.


Here are a couple of examples of querying the works by Shakespeare.
In addition to giving a response to the questions, the Chatbot also lists the sections of the underlying documents and passages from those documents used to form the response/answer.
When creating Gen AI Agents, you need to be careful of two things. The first is the Cloud Region. Gen AI Agents are only available in certain Cloud Regions. If they aren’t available in your Region, you’ll need to request access to one of those or setup a new OCI account based in one of those regions. The second thing is the Resource Limits. At the time of writing this post, the following was allowed. Check out the documentation for more details. You might need to request that these limits be increased.
I’ll have another post showing how you can run the Chatbot on your computer or VM as a webpage.
SelectAI – the beginning of a journey
Oracle released Select AI a few months ago, and with any new product it is always a good idea to give it a little time to fix any “bugs” or “features”. To a certain extent, the release of this capability is a long time behind the marketplace. Similar products have been available in different ways, in different products, in different languages, etc for some time now. I’m not going to get into the benefits of this feature/product, as lots have been written about this and most of those are just rehashing the documentation and the marketing materials created for the release. But over all this time, Oracle seems to have been focused on deploying generative AI and LLM related features into their vast collection of applications. Yes, they have done some really cool work with those applications. But during that period the everyday developer, outside of those Apps development teams, has been left waiting for too long to get proper access to this functionality. In most cases, they have gone elsewhere. One thing Oracle does need to address is the public messaging around certain behavioural aspects of Select AI. There has been some contradictory information between what it says in the documentation and what the various Product Managers are saying. This is a problem, as it just confuses customers who will then use something else.
I’m building a particular application that utilizes various OCI products, including some of their AI products, to create a hands-free way of interacting with data and is suitable for those who have various physical and visual impairments. Should I consider including Select AI? Let’s see if it is up to the task.
Let’s get on with setting up and using Select AI. This post focuses on getting it set-up and running with some basic commands, plus a few warnings too as it isn’t all that it’s made out to be! Check out my other posts that explore different aspects (most other posts only show one or two statements), and some of the issues you need to watch out for, as it may not entirely live up to expectations.
The first thing you need to be aware of, this functionality is only available on an ADW/ATP on Oracle Cloud. At some point, we might have it on-premises, but that might be a while coming as I’m sure the developers are still working on improving how it works (and yes it does need some work).
Step 1 – Connect as ADMIN of ADW/ATP
As the ADMIN user for the database, you need to set-up a few things for other users of the Database before they can use Select AI.
Firstly we add the schema which will be using Select AI to the Access Control List. This will allow them to reach things outside of the Database. The following illustrates adding the BRENDAN schema to the list and allowing HTTP calls to the Cohere API interface.
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.cohere.ai',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'BRENDAN',
principal_type => xs_acl.ptype_db)
);
END;
Next, we need to grant some privileges to some PL/SQL packages.
grant execute on DBMS_CLOUD_AI to BRENDAN;
grant execute on DBMS_CLOUD to BRENDAN;
That’s the admin steps
Step 2 – Connect to your Schema/User – Cohere Example (see OpenAI later in this post)
In my BRENDAN schema, I need to create a Credential.
BEGIN
-- DBMS_CLOUD.DROP_CREDENTIAL (credential_name => 'COHERE_CRED');
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'COHERE_CRED',
username => 'COHERE',
password => '...' );
END;
The … in the above example, indicates where you can place your Cohere API key. It’s very easy to get this and this explains the steps.
Next, you need to create a CLOUD_AI profile.
BEGIN
--DBMS_CLOUD_AI.drop_profile(profile_name => 'COHERE_AI');
DBMS_CLOUD_AI.create_profile(
profile_name => 'COHERE_AI',
attributes => '{"provider": "cohere",
"credential_name": "COHERE_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "sales"},
{"owner": "SH", "name": "products"},
{"owner": "SH", "name": "countries"},
{"owner": "SH", "name": "channels"},
{"owner": "SH", "name": "promotions"},
{"owner": "SH", "name": "times"}]
}');
END;
When creating the CLOUD_AI profile for your schema, you can list the objects/tables you want to expose to the Cohere or OpenAI models. In theory (so the documentation says) it shares various metadata about these objects/tables, which the models in turn interpret, and use this to formulate their response. I said in theory, as that is what the documentation says, but the PMs on a recent webcast said it did use things like primary keys, foreign keys, etc. There are many other challenges here, and I’ll come back to those at a later time.
At this point, you are all set up to use Select AI.
Step 3 – See if you can get Select AI to work!
Before you can use Select AI, you need to enable it for your session. To do this run,
EXEC DBMS_CLOUD_AI.set_profile('COHERE_AI');
If you start a new session/connection or your session/connection gets reset, you will need to run the above command again.
No onto the fun or less fun part. The Fun part is using it and getting results displayed back to you. When this happens (i.e. when it works) it can look like magic is happening. For example here are some commands that worked for me.
select ai how many customers exist;
select AI which customer is the biggest;
select AI what customer is the largest by revenue;
select AI what customer is the largest by sales;
The real challenge with using Select AI is crafting a statement that works i.e. a query is run in the Database and the results are displayed back to you. This can be a real challenge. There are many blog posts out there with lots of examples of using Select AI, along with all the ‘canned’ examples in the documentation and in demos from PMs. I’ve tried all that I could find, and most/all of them didn’t work for me. Something isn’t working correctly behind the scenes. For example here are some examples of statements that didn’t work for me.
select AI how many customers in San Francisco are married;
select AI what is our best selling product by country;
select AI what is our biggest selling product by country;
select AI how many items with the product sub category of Cameras were sold in 1998;
select AI what customer is the biggest;
select AI which customer is the largest by revenue;
Yet some of these statements (above) have been given in docs/posts/demos as working. For a little surprise, have a look at the comment at the bottom of this post.
Don’t let this put you off from trying it. What I’ve shown here is just one part of what Select AI can do. Check out my next post on Select AI where I’ll show examples of the other features, which work and can be used to build some interesting solutions for your users.
Set-up for OpenAI
The steps I’ve given above are for using Cohere. A few others can be used including the popular OpenAI. The setup is very similar to what I’ve shown above and the main difference is the Hostname, OpenAI API key and username. See here for how to get an OpenAI API key.
As ADMIN run.
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.openai.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'BRENDAN',
principal_type => xs_acl.ptype_db)
);
END;
Then in your Schema/user.
BEGIN
DBMS_CLOUD.DROP_CREDENTIAL (credential_name => 'OPENAI_CRED');
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OPENAI_CRED',
username => '.....',
password => '...' );
END;
BEGIN
DBMS_CLOUD_AI.drop_profile(profile_name => 'OPEN_AI');
DBMS_CLOUD_AI.create_profile(
profile_name => 'OPEN_AI',
attributes => '{"provider": "openai",
"credential_name": "OPENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "sales"},
{"owner": "SH", "name": "products"},
{"owner": "SH", "name": "countries"},
{"owner": "SH", "name": "channels"},
{"owner": "SH", "name": "promotions"},
{"owner": "SH", "name": "times"}],
"model":"gpt-3.5-turbo"
}');
END;
And then run the following before trying any use Select AI.
EXEC DBMS_CLOUD_AI.set_profile('OPEN_AI');
If you look earlier in this post, I listed some questions that couldn’t be answered using Cohere. When I switched to using OpenAPI, all of these worked for me. The question then is, which LLM should you use? based on this simple experiment use Open API and avoid Cohere. But things might be different for you and at a later time when Cohere has time to improve.
Check out the other posts about Select AI.







You must be logged in to post a comment.