1
00:00:05,400 --> 00:00:09,180
You are listening to the Breaktime
Tech Talks podcast, a bite-sized tech
2
00:00:09,180 --> 00:00:13,440
podcast for busy developers where we'll
briefly cover technical topics, new
3
00:00:13,440 --> 00:00:15,900
snippets, and more in short time blocks.
4
00:00:16,230 --> 00:00:19,950
I'm your host, Jennifer Reif, an
avid developer and problem solver
5
00:00:20,130 --> 00:00:24,030
with special interest in data,
learning, and all things technology.
6
00:00:26,197 --> 00:00:30,187
Star Wars Day or May the Fourth is
approaching this weekend, and I'm
7
00:00:30,187 --> 00:00:32,167
already definitely ready to geek out.
8
00:00:32,557 --> 00:00:35,767
There is so much content that has
been published recently, so I'll
9
00:00:35,767 --> 00:00:39,187
try to hit a few highlights that
I've dug in on just this week.
10
00:00:39,367 --> 00:00:42,997
But I have a ton of content tabs open
that I still have yet to catch up on,
11
00:00:43,237 --> 00:00:46,387
so that'll probably percolate over
the next several weeks' episodes.
12
00:00:46,747 --> 00:00:49,927
Plus I've produced some content as
well, so this will be an episode
13
00:00:49,927 --> 00:00:53,257
that is jam packed with tidbits
and threads for you to pull on.
14
00:00:53,977 --> 00:00:59,307
The first thing that I want to bring up
this week is there will be a new Neo4j
15
00:00:59,327 --> 00:01:01,667
Graph Academy Java application course.
16
00:01:01,757 --> 00:01:04,907
I hinted at this a bit last week
and said I would go into a bit
17
00:01:04,907 --> 00:01:05,987
more detail this week on it.
18
00:01:06,317 --> 00:01:08,927
It's gonna be called
Using Neo4j with Java.
19
00:01:09,512 --> 00:01:12,452
Hopefully it will be released
in the next week or so.
20
00:01:12,662 --> 00:01:14,252
We'll kind of keep an eye on that.
21
00:01:14,282 --> 00:01:19,202
It should show as a coming soon course
on Neo4j Graph Academy right now, but
22
00:01:19,202 --> 00:01:21,062
we'll see when we can get that live.
23
00:01:21,302 --> 00:01:24,242
It's an upcoming Java driver course.
24
00:01:24,302 --> 00:01:29,012
The goal for the course is just to
show you the foundations of working
25
00:01:29,012 --> 00:01:31,262
with Neo4j and the Java driver.
26
00:01:31,562 --> 00:01:35,762
How to connect to Neo4j from Java,
how to run queries, and handle
27
00:01:35,762 --> 00:01:37,292
the results that are coming back.
28
00:01:37,802 --> 00:01:42,332
Then, once you would finish this
course, you could go on to the full Java
29
00:01:42,332 --> 00:01:44,612
application course that would follow.
30
00:01:44,612 --> 00:01:46,472
That does need revamped right now.
31
00:01:46,472 --> 00:01:49,862
It is also on my to-do list, so
hopefully I will have some updates
32
00:01:49,862 --> 00:01:51,152
to that in the next few weeks.
33
00:01:51,362 --> 00:01:54,692
But for the time being, this
is a great start, just the
34
00:01:54,692 --> 00:01:56,822
Using Neo4j with Java course.
35
00:01:56,942 --> 00:02:01,542
It is a framework-less app, so
again, it's just using Neo4j
36
00:02:01,562 --> 00:02:03,362
and the vanilla Java driver.
37
00:02:03,572 --> 00:02:04,772
No framework involved.
38
00:02:05,397 --> 00:02:08,757
Shows you how to spin up the
connection details, run queries,
39
00:02:08,757 --> 00:02:10,107
and so on, as I mentioned.
40
00:02:10,437 --> 00:02:11,607
This was a lot of fun.
41
00:02:11,607 --> 00:02:16,157
I worked with this course with another
colleague of mine and we collaborated on
42
00:02:16,157 --> 00:02:21,767
this effort, and through that I learned
a little bit more about the Java data
43
00:02:21,767 --> 00:02:26,537
type and Cypher data type mappings for
things like temporal types, spatial
44
00:02:26,537 --> 00:02:28,787
types, and some error handling as well.
45
00:02:29,392 --> 00:02:31,522
I really enjoyed digging
just a little bit deeper.
46
00:02:31,882 --> 00:02:37,912
As I've done development over the last few
years, I've focused mostly on the Spring
47
00:02:37,912 --> 00:02:39,802
ecosystem, which has been pretty cool.
48
00:02:39,802 --> 00:02:42,382
But there are a lot of things
that Spring does out of the box.
49
00:02:42,502 --> 00:02:47,272
So I really thought this was neat to
look specifically at just the plain Java
50
00:02:47,272 --> 00:02:52,992
driver and explore some very Java centric
things and maybe help me understand
51
00:02:52,992 --> 00:02:57,462
some Spring things that they're doing
under the hood, as well as maybe explore
52
00:02:57,462 --> 00:03:00,912
possibilities with other applications
and frameworks and so on down the road.
53
00:03:01,162 --> 00:03:02,272
I really enjoyed this.
54
00:03:02,302 --> 00:03:07,042
Learned a lot more about how Neo4j and
Java interact with one another, how
55
00:03:07,042 --> 00:03:11,702
you would use just the Java driver for
connecting to a database such as Neo4j.
56
00:03:12,257 --> 00:03:15,407
So I'm really excited to see this
come out in the next week or so.
57
00:03:15,507 --> 00:03:16,827
keep an eye out for that.
58
00:03:16,827 --> 00:03:18,597
It is a very short form course.
59
00:03:18,597 --> 00:03:22,287
I think it's only gonna be about an
hour, so very easy to get up and running.
60
00:03:22,287 --> 00:03:25,987
If you just wanna look at an introduction
for working with Java and Neo4j,
61
00:03:26,007 --> 00:03:27,657
this would be a great starting point.
62
00:03:28,437 --> 00:03:32,607
The next thing I wanted to talk about
is I mentioned a few weeks ago that
63
00:03:32,607 --> 00:03:36,847
I had played around with Neo4j's
APOC (Awesome Procedures On Cypher).
64
00:03:36,867 --> 00:03:42,217
It's a utility library for Neo4j that
extends Neo4j's functionality, but APOC
65
00:03:42,237 --> 00:03:46,407
provides some procedures for connecting
to Pinecone, which is a vector database.
66
00:03:46,737 --> 00:03:49,767
I had said I'd had some trouble
trying to figure out how to
67
00:03:49,767 --> 00:03:53,697
connect to Pinecone using APOC
and run some of the functionality
68
00:03:53,697 --> 00:03:54,987
that should be available there.
69
00:03:55,264 --> 00:04:00,167
And so I pulled down the repository a
few days ago and started figuring out
70
00:04:00,167 --> 00:04:04,187
how I could create a pull request for
updating the functionality for some
71
00:04:04,187 --> 00:04:07,697
of the API changes that Pinecone has
made in the last couple of months.
72
00:04:08,117 --> 00:04:10,727
And started playing around with
it and actually realized when I
73
00:04:10,727 --> 00:04:14,417
dug into the code for APOC that
there's not functionality missing.
74
00:04:14,417 --> 00:04:15,527
It's actually all there.
75
00:04:16,127 --> 00:04:18,467
But the configuration was kind of hidden.
76
00:04:18,977 --> 00:04:23,387
Just like it took me a while to figure
out how to format the header's key
77
00:04:23,507 --> 00:04:30,557
configuration for specifying the API Key
as a request header, you can actually add
78
00:04:30,557 --> 00:04:36,052
all the required fields for Pinecone's
index spec in the configuration as well.
79
00:04:36,142 --> 00:04:40,372
Again, the documentation doesn't
make this super clear, and right
80
00:04:40,372 --> 00:04:44,092
now it says something like optional
config, which actually, depending
81
00:04:44,092 --> 00:04:47,212
on the Pinecone procedure you're
using, it's not optional, right?
82
00:04:47,462 --> 00:04:50,952
There are certain things that are required
depending on the procedure and Pinecone,
83
00:04:50,972 --> 00:04:52,832
at least right now that I can find.
84
00:04:53,162 --> 00:04:56,432
I haven't been able to get
the host key first parameter.
85
00:04:56,537 --> 00:05:01,727
working by using the Pinecone host name,
but I just end up leaving that null and
86
00:05:01,727 --> 00:05:03,677
then specifying the API key in the header.
87
00:05:03,857 --> 00:05:06,857
And of course, right now when you
do that, you have to specify the API
88
00:05:06,857 --> 00:05:08,087
key so it knows where to connect.
89
00:05:08,387 --> 00:05:11,207
And so that is a required
config at this point.
90
00:05:11,417 --> 00:05:14,207
Same thing would be if you're
trying to create a new index.
91
00:05:14,207 --> 00:05:17,717
You need to specify, first of all,
whether it's a serverless index or a
92
00:05:17,717 --> 00:05:21,197
pod index, and then some of the details
that go along with each one of those.
93
00:05:21,717 --> 00:05:25,227
Again, that would not be optional as
well, depending on what you're doing.
94
00:05:25,277 --> 00:05:28,547
It's just, it wasn't clear how
to specify some of the config.
95
00:05:29,447 --> 00:05:33,807
And I am unable to get that host
key as the first param, but I may
96
00:05:33,807 --> 00:05:34,887
just be doing something wrong.
97
00:05:34,887 --> 00:05:39,917
According to docs and other people
I've talked to, that host Pinecone URL
98
00:05:39,917 --> 00:05:42,947
should work as the first parameter,
and for some reason it's not for me.
99
00:05:42,947 --> 00:05:45,527
I'm hoping I'm just doing something
wrong, and I'll figure that out soon.
100
00:05:45,577 --> 00:05:49,087
I will hopefully submit a PR though
on some of the documentation and
101
00:05:49,087 --> 00:05:50,977
examples maybe in the near future.
102
00:05:51,517 --> 00:05:55,057
Then I have some content as well
that I got released this week.
103
00:05:55,267 --> 00:05:59,617
The first was, I had submitted last
week an Intro to Retrieval Augmented
104
00:05:59,617 --> 00:06:04,327
Generation, part one, talking
about a few things, a few concepts
105
00:06:04,357 --> 00:06:06,207
of the Generative AI landscape.
106
00:06:06,927 --> 00:06:11,877
This week, I published part two, which
goes and stacks a few more concepts on
107
00:06:11,877 --> 00:06:13,497
top of what we talked about in part one.
108
00:06:13,767 --> 00:06:16,887
And I talk a little bit about
generative AI as layers.
109
00:06:16,887 --> 00:06:20,247
I've started thinking of Gen AI as
layers, and I kind of like that analogy.
110
00:06:20,427 --> 00:06:24,607
We talk about vector rag, then
graph rag, agents, and then MCP.
111
00:06:24,927 --> 00:06:28,467
I talk about what each is and when
they're beneficial, when you should
112
00:06:28,467 --> 00:06:30,327
use one over the other and so on.
113
00:06:30,912 --> 00:06:32,172
Just to kind of get you started.
114
00:06:32,172 --> 00:06:35,532
Again, covering a lot of these
foundational concepts and then providing
115
00:06:35,532 --> 00:06:39,132
external links where you can go to
learn more information or build some of
116
00:06:39,132 --> 00:06:40,632
that knowledge on your own elsewhere.
117
00:06:41,832 --> 00:06:47,142
Then I also had a guest appearance
on Neo4j Live, which is Neo4j's live
118
00:06:47,142 --> 00:06:49,132
stream that occurs every so often.
119
00:06:49,132 --> 00:06:52,972
And I talked about my ebook that
I released late last year, which
120
00:06:52,972 --> 00:06:55,852
is called Developer's Guide:
How to Build a Knowledge Graph.
121
00:06:56,212 --> 00:07:00,052
And that is available as a free
downloadable resource, but I talked a
122
00:07:00,052 --> 00:07:01,522
little bit about it on the live stream.
123
00:07:01,522 --> 00:07:05,792
I walk through the knowledge graph
ebook in this session, a little
124
00:07:05,792 --> 00:07:09,262
bit about the tools, how to build
a graph and a knowledge graph,
125
00:07:09,262 --> 00:07:10,642
what the differences are there.
126
00:07:10,982 --> 00:07:15,512
Show the repository links for
where to pull in and import data.
127
00:07:15,812 --> 00:07:19,712
There's also a couple of screens that
have changed in the Aura Console for
128
00:07:19,712 --> 00:07:23,687
Neo4j that show up differently than
the screenshots shown in the book.
129
00:07:23,867 --> 00:07:27,437
So I talk a little bit about the changes
that have been made in the UI, as well
130
00:07:27,437 --> 00:07:30,947
as the tools, and tips and tricks, and
answer some live questions as well.
131
00:07:31,127 --> 00:07:34,067
So if you're interested in that,
I'll link the YouTube video as
132
00:07:34,067 --> 00:07:35,447
well as the downloadable ebook.
133
00:07:35,867 --> 00:07:38,837
Now, we can spin on to
the content section.
134
00:07:38,927 --> 00:07:42,437
Again, I have tons of tabs of
content open, but these were the
135
00:07:42,437 --> 00:07:46,067
two things that I focused on reading
and catching up on this week.
136
00:07:46,722 --> 00:07:53,082
The first is a blog series produced by
Mark Heckler on AI generated content.
137
00:07:53,132 --> 00:07:56,972
What happened here is there are two
repositories, two code repositories.
138
00:07:57,272 --> 00:08:02,552
One is a blog generator AI, and
the other is a blog editor AI.
139
00:08:02,832 --> 00:08:06,012
There's some resources and prompts
outlined in each one of these, but
140
00:08:06,012 --> 00:08:12,682
the blog generator takes a prompt
input, as well as a particular topic
141
00:08:12,712 --> 00:08:16,972
and some guidelines and requirements
for the content it needs to produce.
142
00:08:17,002 --> 00:08:21,832
And then it produces a piece of content,
a short blog on that topic and sends
143
00:08:21,832 --> 00:08:25,852
it over to the editor service, the
other code repository, if you will.
144
00:08:26,507 --> 00:08:30,617
And the blog editor AI has some
requirements and a prompt and resources
145
00:08:30,617 --> 00:08:35,717
that have been outlined by the developer
and then takes the blog generated
146
00:08:35,717 --> 00:08:41,157
content and edits it or analyzes it
and approves or rejects the content,
147
00:08:41,312 --> 00:08:43,322
and then submits some suggestions back.
148
00:08:43,652 --> 00:08:47,992
And there's a few iterations that
happen there, replicating a writer
149
00:08:47,992 --> 00:08:51,742
editor that we use in the human world
where somebody would write a piece
150
00:08:51,742 --> 00:08:55,102
of content, then an editor would
review it and send back comments.
151
00:08:55,152 --> 00:08:58,662
Then the writer would take those
and create a revision and send that
152
00:08:58,662 --> 00:09:01,397
back to the editor, and the editor
might have a few more additions and,
153
00:09:01,402 --> 00:09:03,462
and revisions to be made and so on.
154
00:09:03,642 --> 00:09:08,112
And that's exactly what these ais are
doing in this particular blog series.
155
00:09:08,542 --> 00:09:14,002
The content is published on Mark Heckler's
blog and shows, and very clearly says
156
00:09:14,002 --> 00:09:18,742
this is AI generated content, but
shows the output of what the writer
157
00:09:18,742 --> 00:09:23,212
and editor came up with at the end, as
well as whether it was finally approved
158
00:09:23,212 --> 00:09:24,952
or rejected after so many iterations.
159
00:09:24,952 --> 00:09:29,972
So a series of max iterations didn't let
it go on for like 20 or 50 revisions.
160
00:09:29,972 --> 00:09:32,822
It was only I think four, three
or four or something like that.
161
00:09:33,812 --> 00:09:37,322
And most of the blog posts also
include some developer notes by Mark
162
00:09:37,352 --> 00:09:41,772
on just his thoughts and opinions
and interpretation of the content
163
00:09:41,772 --> 00:09:43,002
that was produced on the other side.
164
00:09:43,337 --> 00:09:46,367
This I found was a really
interesting experiment on AI
165
00:09:46,367 --> 00:09:48,167
generated content and feedback.
166
00:09:48,167 --> 00:09:52,157
So using an AI to generate content
and then using another AI to
167
00:09:52,157 --> 00:09:57,357
evaluate and revise that content, two
separate AIs working in tandem here.
168
00:09:57,567 --> 00:09:58,917
I thought this was really interesting.
169
00:09:58,947 --> 00:10:03,477
There's I think now 15 blog posts that
are, that are published to that site.
170
00:10:03,687 --> 00:10:06,897
So if you wanna check that out, as
well as the code rep repositories
171
00:10:06,897 --> 00:10:09,957
that go along with that, I will link
to everything in the description.
172
00:10:10,662 --> 00:10:15,352
Then the second piece of content, and
the last one for today, is that in
173
00:10:15,352 --> 00:10:19,972
researching for my Intro to Retrieval
Augmented Generation blog post part
174
00:10:19,972 --> 00:10:23,662
two that I did this week, I looked a
little bit at Michael Hunger's blog
175
00:10:23,662 --> 00:10:27,727
post on MCP It's called Everything
a Developer Needs to Know about
176
00:10:27,822 --> 00:10:30,242
the Model Context protocol or MCP.
177
00:10:31,322 --> 00:10:36,512
MCP launched late last fall and took
the generative AI market and caught it
178
00:10:36,512 --> 00:10:38,582
up in a whirlwind, that is for sure.
179
00:10:38,762 --> 00:10:45,467
But I really loved Michael Hunger's take
on just the overall sphere of what's
180
00:10:45,467 --> 00:10:50,717
going on with MCP, what it is, how to
think of it, the benefits of it, why it
181
00:10:50,717 --> 00:10:52,307
has kind of taken the world by storm.
182
00:10:52,547 --> 00:10:57,907
It's a new standardization for
working with AI applications and LLMs.
183
00:10:58,537 --> 00:11:02,347
Shows some examples and diagrams
of architectures, some examples
184
00:11:02,347 --> 00:11:06,907
of servers and resources, plus
some MCP integrations that Michael
185
00:11:06,907 --> 00:11:08,346
and the team have built as well.
186
00:11:08,406 --> 00:11:12,096
And then it also talks about some
of the limitations or considerations
187
00:11:12,096 --> 00:11:16,236
that you need to think of with MCP as
it stands right now in the industry.
188
00:11:16,836 --> 00:11:20,766
Then finally, the blog post wraps up
with plenty of third party resources
189
00:11:20,766 --> 00:11:22,206
for getting started with MCP.
190
00:11:22,446 --> 00:11:26,496
So whether you're looking for
vendor perspectives on MCP or
191
00:11:27,021 --> 00:11:30,351
maybe some integration examples
or you want to look at other
192
00:11:30,351 --> 00:11:34,821
people's thoughts and perspectives
on the introduction, what MCP is.
193
00:11:35,091 --> 00:11:37,101
You can look at a few
different options there.
194
00:11:37,101 --> 00:11:40,951
There's a video format, there's
somebody else explaining MCP and so on.
195
00:11:40,981 --> 00:11:45,481
So lots of options there if you just need
a place to kind of formulate your thoughts
196
00:11:45,481 --> 00:11:47,641
on MCP and get an idea for what it is.
197
00:11:47,761 --> 00:11:51,226
I thought this blog post was extremely
thorough and very, very helpful.
198
00:11:52,176 --> 00:11:55,986
And formulated the content in my Intro
to Rag part two blog post as well.
199
00:11:56,146 --> 00:11:56,866
I will link that.
200
00:11:56,866 --> 00:11:59,986
I thought Michael Hunger's
post here on MCP was fantastic.
201
00:12:00,646 --> 00:12:04,766
This episode I gave some details about
the soon to be released Using Neo4j
202
00:12:04,786 --> 00:12:09,166
with Java online Graph Academy course,
some updates on adventures with using
203
00:12:09,166 --> 00:12:13,311
Neo4j APOC to connect to the Pinecone
Vector database, and published my second
204
00:12:13,311 --> 00:12:14,961
part of the Intro to RAG blog series.
205
00:12:15,381 --> 00:12:19,461
Next, we talked content with an
interesting AI generated and edited blog
206
00:12:19,461 --> 00:12:24,081
series by Mark Heckler and a fantastic
overview of MCP by Michael Hunger.
207
00:12:24,471 --> 00:12:27,171
Thanks for listening to this
week's fire hose of information,
208
00:12:27,411 --> 00:12:29,121
and May the Fourth be with you.
00:00:05,400 --> 00:00:09,180
You are listening to the Breaktime
Tech Talks podcast, a bite-sized tech
2
00:00:09,180 --> 00:00:13,440
podcast for busy developers where we'll
briefly cover technical topics, new
3
00:00:13,440 --> 00:00:15,900
snippets, and more in short time blocks.
4
00:00:16,230 --> 00:00:19,950
I'm your host, Jennifer Reif, an
avid developer and problem solver
5
00:00:20,130 --> 00:00:24,030
with special interest in data,
learning, and all things technology.
6
00:00:26,197 --> 00:00:30,187
Star Wars Day or May the Fourth is
approaching this weekend, and I'm
7
00:00:30,187 --> 00:00:32,167
already definitely ready to geek out.
8
00:00:32,557 --> 00:00:35,767
There is so much content that has
been published recently, so I'll
9
00:00:35,767 --> 00:00:39,187
try to hit a few highlights that
I've dug in on just this week.
10
00:00:39,367 --> 00:00:42,997
But I have a ton of content tabs open
that I still have yet to catch up on,
11
00:00:43,237 --> 00:00:46,387
so that'll probably percolate over
the next several weeks' episodes.
12
00:00:46,747 --> 00:00:49,927
Plus I've produced some content as
well, so this will be an episode
13
00:00:49,927 --> 00:00:53,257
that is jam packed with tidbits
and threads for you to pull on.
14
00:00:53,977 --> 00:00:59,307
The first thing that I want to bring up
this week is there will be a new Neo4j
15
00:00:59,327 --> 00:01:01,667
Graph Academy Java application course.
16
00:01:01,757 --> 00:01:04,907
I hinted at this a bit last week
and said I would go into a bit
17
00:01:04,907 --> 00:01:05,987
more detail this week on it.
18
00:01:06,317 --> 00:01:08,927
It's gonna be called
Using Neo4j with Java.
19
00:01:09,512 --> 00:01:12,452
Hopefully it will be released
in the next week or so.
20
00:01:12,662 --> 00:01:14,252
We'll kind of keep an eye on that.
21
00:01:14,282 --> 00:01:19,202
It should show as a coming soon course
on Neo4j Graph Academy right now, but
22
00:01:19,202 --> 00:01:21,062
we'll see when we can get that live.
23
00:01:21,302 --> 00:01:24,242
It's an upcoming Java driver course.
24
00:01:24,302 --> 00:01:29,012
The goal for the course is just to
show you the foundations of working
25
00:01:29,012 --> 00:01:31,262
with Neo4j and the Java driver.
26
00:01:31,562 --> 00:01:35,762
How to connect to Neo4j from Java,
how to run queries, and handle
27
00:01:35,762 --> 00:01:37,292
the results that are coming back.
28
00:01:37,802 --> 00:01:42,332
Then, once you would finish this
course, you could go on to the full Java
29
00:01:42,332 --> 00:01:44,612
application course that would follow.
30
00:01:44,612 --> 00:01:46,472
That does need revamped right now.
31
00:01:46,472 --> 00:01:49,862
It is also on my to-do list, so
hopefully I will have some updates
32
00:01:49,862 --> 00:01:51,152
to that in the next few weeks.
33
00:01:51,362 --> 00:01:54,692
But for the time being, this
is a great start, just the
34
00:01:54,692 --> 00:01:56,822
Using Neo4j with Java course.
35
00:01:56,942 --> 00:02:01,542
It is a framework-less app, so
again, it's just using Neo4j
36
00:02:01,562 --> 00:02:03,362
and the vanilla Java driver.
37
00:02:03,572 --> 00:02:04,772
No framework involved.
38
00:02:05,397 --> 00:02:08,757
Shows you how to spin up the
connection details, run queries,
39
00:02:08,757 --> 00:02:10,107
and so on, as I mentioned.
40
00:02:10,437 --> 00:02:11,607
This was a lot of fun.
41
00:02:11,607 --> 00:02:16,157
I worked with this course with another
colleague of mine and we collaborated on
42
00:02:16,157 --> 00:02:21,767
this effort, and through that I learned
a little bit more about the Java data
43
00:02:21,767 --> 00:02:26,537
type and Cypher data type mappings for
things like temporal types, spatial
44
00:02:26,537 --> 00:02:28,787
types, and some error handling as well.
45
00:02:29,392 --> 00:02:31,522
I really enjoyed digging
just a little bit deeper.
46
00:02:31,882 --> 00:02:37,912
As I've done development over the last few
years, I've focused mostly on the Spring
47
00:02:37,912 --> 00:02:39,802
ecosystem, which has been pretty cool.
48
00:02:39,802 --> 00:02:42,382
But there are a lot of things
that Spring does out of the box.
49
00:02:42,502 --> 00:02:47,272
So I really thought this was neat to
look specifically at just the plain Java
50
00:02:47,272 --> 00:02:52,992
driver and explore some very Java centric
things and maybe help me understand
51
00:02:52,992 --> 00:02:57,462
some Spring things that they're doing
under the hood, as well as maybe explore
52
00:02:57,462 --> 00:03:00,912
possibilities with other applications
and frameworks and so on down the road.
53
00:03:01,162 --> 00:03:02,272
I really enjoyed this.
54
00:03:02,302 --> 00:03:07,042
Learned a lot more about how Neo4j and
Java interact with one another, how
55
00:03:07,042 --> 00:03:11,702
you would use just the Java driver for
connecting to a database such as Neo4j.
56
00:03:12,257 --> 00:03:15,407
So I'm really excited to see this
come out in the next week or so.
57
00:03:15,507 --> 00:03:16,827
keep an eye out for that.
58
00:03:16,827 --> 00:03:18,597
It is a very short form course.
59
00:03:18,597 --> 00:03:22,287
I think it's only gonna be about an
hour, so very easy to get up and running.
60
00:03:22,287 --> 00:03:25,987
If you just wanna look at an introduction
for working with Java and Neo4j,
61
00:03:26,007 --> 00:03:27,657
this would be a great starting point.
62
00:03:28,437 --> 00:03:32,607
The next thing I wanted to talk about
is I mentioned a few weeks ago that
63
00:03:32,607 --> 00:03:36,847
I had played around with Neo4j's
APOC (Awesome Procedures On Cypher).
64
00:03:36,867 --> 00:03:42,217
It's a utility library for Neo4j that
extends Neo4j's functionality, but APOC
65
00:03:42,237 --> 00:03:46,407
provides some procedures for connecting
to Pinecone, which is a vector database.
66
00:03:46,737 --> 00:03:49,767
I had said I'd had some trouble
trying to figure out how to
67
00:03:49,767 --> 00:03:53,697
connect to Pinecone using APOC
and run some of the functionality
68
00:03:53,697 --> 00:03:54,987
that should be available there.
69
00:03:55,264 --> 00:04:00,167
And so I pulled down the repository a
few days ago and started figuring out
70
00:04:00,167 --> 00:04:04,187
how I could create a pull request for
updating the functionality for some
71
00:04:04,187 --> 00:04:07,697
of the API changes that Pinecone has
made in the last couple of months.
72
00:04:08,117 --> 00:04:10,727
And started playing around with
it and actually realized when I
73
00:04:10,727 --> 00:04:14,417
dug into the code for APOC that
there's not functionality missing.
74
00:04:14,417 --> 00:04:15,527
It's actually all there.
75
00:04:16,127 --> 00:04:18,467
But the configuration was kind of hidden.
76
00:04:18,977 --> 00:04:23,387
Just like it took me a while to figure
out how to format the header's key
77
00:04:23,507 --> 00:04:30,557
configuration for specifying the API Key
as a request header, you can actually add
78
00:04:30,557 --> 00:04:36,052
all the required fields for Pinecone's
index spec in the configuration as well.
79
00:04:36,142 --> 00:04:40,372
Again, the documentation doesn't
make this super clear, and right
80
00:04:40,372 --> 00:04:44,092
now it says something like optional
config, which actually, depending
81
00:04:44,092 --> 00:04:47,212
on the Pinecone procedure you're
using, it's not optional, right?
82
00:04:47,462 --> 00:04:50,952
There are certain things that are required
depending on the procedure and Pinecone,
83
00:04:50,972 --> 00:04:52,832
at least right now that I can find.
84
00:04:53,162 --> 00:04:56,432
I haven't been able to get
the host key first parameter.
85
00:04:56,537 --> 00:05:01,727
working by using the Pinecone host name,
but I just end up leaving that null and
86
00:05:01,727 --> 00:05:03,677
then specifying the API key in the header.
87
00:05:03,857 --> 00:05:06,857
And of course, right now when you
do that, you have to specify the API
88
00:05:06,857 --> 00:05:08,087
key so it knows where to connect.
89
00:05:08,387 --> 00:05:11,207
And so that is a required
config at this point.
90
00:05:11,417 --> 00:05:14,207
Same thing would be if you're
trying to create a new index.
91
00:05:14,207 --> 00:05:17,717
You need to specify, first of all,
whether it's a serverless index or a
92
00:05:17,717 --> 00:05:21,197
pod index, and then some of the details
that go along with each one of those.
93
00:05:21,717 --> 00:05:25,227
Again, that would not be optional as
well, depending on what you're doing.
94
00:05:25,277 --> 00:05:28,547
It's just, it wasn't clear how
to specify some of the config.
95
00:05:29,447 --> 00:05:33,807
And I am unable to get that host
key as the first param, but I may
96
00:05:33,807 --> 00:05:34,887
just be doing something wrong.
97
00:05:34,887 --> 00:05:39,917
According to docs and other people
I've talked to, that host Pinecone URL
98
00:05:39,917 --> 00:05:42,947
should work as the first parameter,
and for some reason it's not for me.
99
00:05:42,947 --> 00:05:45,527
I'm hoping I'm just doing something
wrong, and I'll figure that out soon.
100
00:05:45,577 --> 00:05:49,087
I will hopefully submit a PR though
on some of the documentation and
101
00:05:49,087 --> 00:05:50,977
examples maybe in the near future.
102
00:05:51,517 --> 00:05:55,057
Then I have some content as well
that I got released this week.
103
00:05:55,267 --> 00:05:59,617
The first was, I had submitted last
week an Intro to Retrieval Augmented
104
00:05:59,617 --> 00:06:04,327
Generation, part one, talking
about a few things, a few concepts
105
00:06:04,357 --> 00:06:06,207
of the Generative AI landscape.
106
00:06:06,927 --> 00:06:11,877
This week, I published part two, which
goes and stacks a few more concepts on
107
00:06:11,877 --> 00:06:13,497
top of what we talked about in part one.
108
00:06:13,767 --> 00:06:16,887
And I talk a little bit about
generative AI as layers.
109
00:06:16,887 --> 00:06:20,247
I've started thinking of Gen AI as
layers, and I kind of like that analogy.
110
00:06:20,427 --> 00:06:24,607
We talk about vector rag, then
graph rag, agents, and then MCP.
111
00:06:24,927 --> 00:06:28,467
I talk about what each is and when
they're beneficial, when you should
112
00:06:28,467 --> 00:06:30,327
use one over the other and so on.
113
00:06:30,912 --> 00:06:32,172
Just to kind of get you started.
114
00:06:32,172 --> 00:06:35,532
Again, covering a lot of these
foundational concepts and then providing
115
00:06:35,532 --> 00:06:39,132
external links where you can go to
learn more information or build some of
116
00:06:39,132 --> 00:06:40,632
that knowledge on your own elsewhere.
117
00:06:41,832 --> 00:06:47,142
Then I also had a guest appearance
on Neo4j Live, which is Neo4j's live
118
00:06:47,142 --> 00:06:49,132
stream that occurs every so often.
119
00:06:49,132 --> 00:06:52,972
And I talked about my ebook that
I released late last year, which
120
00:06:52,972 --> 00:06:55,852
is called Developer's Guide:
How to Build a Knowledge Graph.
121
00:06:56,212 --> 00:07:00,052
And that is available as a free
downloadable resource, but I talked a
122
00:07:00,052 --> 00:07:01,522
little bit about it on the live stream.
123
00:07:01,522 --> 00:07:05,792
I walk through the knowledge graph
ebook in this session, a little
124
00:07:05,792 --> 00:07:09,262
bit about the tools, how to build
a graph and a knowledge graph,
125
00:07:09,262 --> 00:07:10,642
what the differences are there.
126
00:07:10,982 --> 00:07:15,512
Show the repository links for
where to pull in and import data.
127
00:07:15,812 --> 00:07:19,712
There's also a couple of screens that
have changed in the Aura Console for
128
00:07:19,712 --> 00:07:23,687
Neo4j that show up differently than
the screenshots shown in the book.
129
00:07:23,867 --> 00:07:27,437
So I talk a little bit about the changes
that have been made in the UI, as well
130
00:07:27,437 --> 00:07:30,947
as the tools, and tips and tricks, and
answer some live questions as well.
131
00:07:31,127 --> 00:07:34,067
So if you're interested in that,
I'll link the YouTube video as
132
00:07:34,067 --> 00:07:35,447
well as the downloadable ebook.
133
00:07:35,867 --> 00:07:38,837
Now, we can spin on to
the content section.
134
00:07:38,927 --> 00:07:42,437
Again, I have tons of tabs of
content open, but these were the
135
00:07:42,437 --> 00:07:46,067
two things that I focused on reading
and catching up on this week.
136
00:07:46,722 --> 00:07:53,082
The first is a blog series produced by
Mark Heckler on AI generated content.
137
00:07:53,132 --> 00:07:56,972
What happened here is there are two
repositories, two code repositories.
138
00:07:57,272 --> 00:08:02,552
One is a blog generator AI, and
the other is a blog editor AI.
139
00:08:02,832 --> 00:08:06,012
There's some resources and prompts
outlined in each one of these, but
140
00:08:06,012 --> 00:08:12,682
the blog generator takes a prompt
input, as well as a particular topic
141
00:08:12,712 --> 00:08:16,972
and some guidelines and requirements
for the content it needs to produce.
142
00:08:17,002 --> 00:08:21,832
And then it produces a piece of content,
a short blog on that topic and sends
143
00:08:21,832 --> 00:08:25,852
it over to the editor service, the
other code repository, if you will.
144
00:08:26,507 --> 00:08:30,617
And the blog editor AI has some
requirements and a prompt and resources
145
00:08:30,617 --> 00:08:35,717
that have been outlined by the developer
and then takes the blog generated
146
00:08:35,717 --> 00:08:41,157
content and edits it or analyzes it
and approves or rejects the content,
147
00:08:41,312 --> 00:08:43,322
and then submits some suggestions back.
148
00:08:43,652 --> 00:08:47,992
And there's a few iterations that
happen there, replicating a writer
149
00:08:47,992 --> 00:08:51,742
editor that we use in the human world
where somebody would write a piece
150
00:08:51,742 --> 00:08:55,102
of content, then an editor would
review it and send back comments.
151
00:08:55,152 --> 00:08:58,662
Then the writer would take those
and create a revision and send that
152
00:08:58,662 --> 00:09:01,397
back to the editor, and the editor
might have a few more additions and,
153
00:09:01,402 --> 00:09:03,462
and revisions to be made and so on.
154
00:09:03,642 --> 00:09:08,112
And that's exactly what these ais are
doing in this particular blog series.
155
00:09:08,542 --> 00:09:14,002
The content is published on Mark Heckler's
blog and shows, and very clearly says
156
00:09:14,002 --> 00:09:18,742
this is AI generated content, but
shows the output of what the writer
157
00:09:18,742 --> 00:09:23,212
and editor came up with at the end, as
well as whether it was finally approved
158
00:09:23,212 --> 00:09:24,952
or rejected after so many iterations.
159
00:09:24,952 --> 00:09:29,972
So a series of max iterations didn't let
it go on for like 20 or 50 revisions.
160
00:09:29,972 --> 00:09:32,822
It was only I think four, three
or four or something like that.
161
00:09:33,812 --> 00:09:37,322
And most of the blog posts also
include some developer notes by Mark
162
00:09:37,352 --> 00:09:41,772
on just his thoughts and opinions
and interpretation of the content
163
00:09:41,772 --> 00:09:43,002
that was produced on the other side.
164
00:09:43,337 --> 00:09:46,367
This I found was a really
interesting experiment on AI
165
00:09:46,367 --> 00:09:48,167
generated content and feedback.
166
00:09:48,167 --> 00:09:52,157
So using an AI to generate content
and then using another AI to
167
00:09:52,157 --> 00:09:57,357
evaluate and revise that content, two
separate AIs working in tandem here.
168
00:09:57,567 --> 00:09:58,917
I thought this was really interesting.
169
00:09:58,947 --> 00:10:03,477
There's I think now 15 blog posts that
are, that are published to that site.
170
00:10:03,687 --> 00:10:06,897
So if you wanna check that out, as
well as the code rep repositories
171
00:10:06,897 --> 00:10:09,957
that go along with that, I will link
to everything in the description.
172
00:10:10,662 --> 00:10:15,352
Then the second piece of content, and
the last one for today, is that in
173
00:10:15,352 --> 00:10:19,972
researching for my Intro to Retrieval
Augmented Generation blog post part
174
00:10:19,972 --> 00:10:23,662
two that I did this week, I looked a
little bit at Michael Hunger's blog
175
00:10:23,662 --> 00:10:27,727
post on MCP It's called Everything
a Developer Needs to Know about
176
00:10:27,822 --> 00:10:30,242
the Model Context protocol or MCP.
177
00:10:31,322 --> 00:10:36,512
MCP launched late last fall and took
the generative AI market and caught it
178
00:10:36,512 --> 00:10:38,582
up in a whirlwind, that is for sure.
179
00:10:38,762 --> 00:10:45,467
But I really loved Michael Hunger's take
on just the overall sphere of what's
180
00:10:45,467 --> 00:10:50,717
going on with MCP, what it is, how to
think of it, the benefits of it, why it
181
00:10:50,717 --> 00:10:52,307
has kind of taken the world by storm.
182
00:10:52,547 --> 00:10:57,907
It's a new standardization for
working with AI applications and LLMs.
183
00:10:58,537 --> 00:11:02,347
Shows some examples and diagrams
of architectures, some examples
184
00:11:02,347 --> 00:11:06,907
of servers and resources, plus
some MCP integrations that Michael
185
00:11:06,907 --> 00:11:08,346
and the team have built as well.
186
00:11:08,406 --> 00:11:12,096
And then it also talks about some
of the limitations or considerations
187
00:11:12,096 --> 00:11:16,236
that you need to think of with MCP as
it stands right now in the industry.
188
00:11:16,836 --> 00:11:20,766
Then finally, the blog post wraps up
with plenty of third party resources
189
00:11:20,766 --> 00:11:22,206
for getting started with MCP.
190
00:11:22,446 --> 00:11:26,496
So whether you're looking for
vendor perspectives on MCP or
191
00:11:27,021 --> 00:11:30,351
maybe some integration examples
or you want to look at other
192
00:11:30,351 --> 00:11:34,821
people's thoughts and perspectives
on the introduction, what MCP is.
193
00:11:35,091 --> 00:11:37,101
You can look at a few
different options there.
194
00:11:37,101 --> 00:11:40,951
There's a video format, there's
somebody else explaining MCP and so on.
195
00:11:40,981 --> 00:11:45,481
So lots of options there if you just need
a place to kind of formulate your thoughts
196
00:11:45,481 --> 00:11:47,641
on MCP and get an idea for what it is.
197
00:11:47,761 --> 00:11:51,226
I thought this blog post was extremely
thorough and very, very helpful.
198
00:11:52,176 --> 00:11:55,986
And formulated the content in my Intro
to Rag part two blog post as well.
199
00:11:56,146 --> 00:11:56,866
I will link that.
200
00:11:56,866 --> 00:11:59,986
I thought Michael Hunger's
post here on MCP was fantastic.
201
00:12:00,646 --> 00:12:04,766
This episode I gave some details about
the soon to be released Using Neo4j
202
00:12:04,786 --> 00:12:09,166
with Java online Graph Academy course,
some updates on adventures with using
203
00:12:09,166 --> 00:12:13,311
Neo4j APOC to connect to the Pinecone
Vector database, and published my second
204
00:12:13,311 --> 00:12:14,961
part of the Intro to RAG blog series.
205
00:12:15,381 --> 00:12:19,461
Next, we talked content with an
interesting AI generated and edited blog
206
00:12:19,461 --> 00:12:24,081
series by Mark Heckler and a fantastic
overview of MCP by Michael Hunger.
207
00:12:24,471 --> 00:12:27,171
Thanks for listening to this
week's fire hose of information,
208
00:12:27,411 --> 00:12:29,121
and May the Fourth be with you.